home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / qbprog.EXE / MODEM.KOD < prev    next >
Text File  |  1995-10-18  |  65KB  |  2,477 lines

  1. 'QBASIC'de çalìƒìr
  2.   'ÿletiƒim bufferi bu dilde standart 512 byte'dìr, yavaƒ bir hìz seçiniz
  3.  
  4.    'QuickBasic de çalìƒmasì için ise  versiyon 7.1 QBX /L QBX /C:32000
  5.    '                                  versiyon 4.5 QB /L QB /C:32000
  6.    '                                       ƒeklinde yüklenmelidir.
  7.  
  8. 'Her türlü modemde çalìƒan iletiƒim programì
  9. 'Com1,....Com8 arasì seri çìkìƒ
  10. 'IRQ2,....IRQ7 arasì kesme istemi
  11. '2400,...115200 Bps hìz
  12.  
  13.  
  14. 'Yapìm : Gürol DEMÿR, Mersin (ÿçel), Aºustos 1995
  15.  
  16. DECLARE SUB TutanakAc ()
  17. DECLARE SUB OtomatikSec ()
  18. DECLARE SUB AlmaDizinineGec ()
  19. DECLARE SUB ProtokolOku ()
  20. DECLARE SUB DosyaOgren ()
  21. DECLARE SUB DosyaGonder ()
  22. DECLARE SUB DosyaAl ()
  23. DECLARE SUB ProtokolSec ()
  24. DECLARE SUB ProtokolDefteri ()
  25. DECLARE SUB TelefonDefteri ()
  26. DECLARE SUB TerminalChatGelen ()
  27. DECLARE SUB TerminalChatGiden ()
  28. DECLARE SUB TerminalGidenler ()
  29. DECLARE SUB TerminalGelenler ()
  30. DECLARE SUB TerminalGelenleriYorumla ()
  31. DECLARE SUB TerminalMakrolar ()
  32. DECLARE SUB MesajYazTerminal ()
  33. DECLARE SUB Pencere ()
  34. DECLARE SUB EkranSakla ()
  35. DECLARE SUB EkranKoy ()
  36. DECLARE SUB EkranAc ()
  37. DECLARE SUB EkranUstuYaz ()
  38. DECLARE SUB ModemKapa ()
  39. DECLARE SUB ModemAc ()
  40. DECLARE SUB ModemHangUp ()
  41. DECLARE SUB MakroTus ()
  42. DECLARE SUB MakroTusOku ()
  43. DECLARE SUB DosyaAc ()
  44. DECLARE SUB Artma2 ()
  45. DECLARE SUB Eksilme2 ()
  46. DECLARE SUB RenkAyar ()
  47. DECLARE SUB Kullanan ()
  48. DECLARE SUB Terminal ()
  49. DECLARE SUB Secim ()
  50. DECLARE SUB AdresSec ()
  51. DECLARE SUB PortSec ()
  52. DECLARE SUB EkranSec ()
  53. DECLARE SUB Modemsetup ()
  54. DECLARE SUB AnsiyeBak ()
  55. DECLARE SUB DizinAc ()
  56. DECLARE SUB MesajYaz ()
  57. DECLARE SUB ConfigOku ()
  58. DECLARE SUB ConfigAc ()
  59. DECLARE SUB ConfigYaz ()
  60. DECLARE SUB BaudSec ()
  61. DECLARE SUB Dizinler ()
  62. DECLARE SUB BaudSec ()
  63. DECLARE SUB IrqSec ()
  64. DECLARE SUB ModemBul ()
  65. DECLARE SUB Kurulumlar ()
  66. DECLARE SUB Eksilme ()
  67. DECLARE SUB Artma ()
  68. DECLARE SUB Verialma ()
  69. DECLARE SUB IlkBaslama ()
  70. DECLARE SUB Ilkkurulma ()
  71. DECLARE SUB EkranAdresiBul ()
  72. DECLARE SUB Elveda ()
  73. DECLARE SUB ArkaPlanCiz ()
  74. DECLARE SUB HareketliMenu ()
  75. DECLARE SUB CerceveCiz ()
  76.  
  77. COMMON SHARED MenuYatay, MenuDikey, MenuGenis, MenuYuksek, MenuSecim$
  78. COMMON SHARED VerialDikey, VeriAlYatay, Verial$, VeriTipi, VerialBoy
  79. COMMON SHARED EkranAdresi, Tus$, Hata, Mesaj$, Veri$, Veri1$, Z, JL
  80. COMMON SHARED Kim$, Tel$, IRQ$, Baud$, Adres$, PortNo$, Ekran$, Katar$
  81. COMMON SHARED Kosul$, Cevap$, Echo$, Ses$, Yatay, Ekra$, Port, Ek$
  82. COMMON SHARED DosyaAd$, DosyaBoy, Satir, Sutun, RR, Muzik$, Ekran
  83. COMMON SHARED HatDolu, Gelen$, Cer$, GelGid$, Z$, Kapasite
  84. COMMON SHARED Tercih$, Oto$, Mkr$, Sontel, Tutanak$, Makro, Oto
  85. COMMON SHARED DosyaAdi$, DosyaBoyu
  86.  
  87. Kapasite = 255
  88. DIM SHARED Sec$(Kapasite), Sec1$(10), Renk(10), Makro$(36), Al$(4), Dizin$(5)
  89. DIM SHARED Sakla(30), Gid$(10), Gel$(10), Chat(2), Protokol$(7), Mak$(3)
  90.  
  91. KEY 6, CHR$(242): 'Küçük büyük harf deºiƒim
  92.  
  93. ON ERROR GOTO Hatalar
  94. CALL IlkBaslama
  95. CALL Elveda
  96. END
  97.  
  98. Hatalar:
  99. IF Hata = 1 THEN RESUME NEXT
  100. IF Hata = 2 THEN Hata = 3: RESUME NEXT
  101. IF Hata = 4 THEN Hata = 5: RESUME NEXT
  102. IF ERR = 57 THEN RESUME
  103. IF Hata = 1 THEN RESUME NEXT
  104. CALL ModemKapa
  105. COLOR 7, 1
  106. CLS
  107. Mesaj$ = "!Lütfen bu hatayì bildirin !! Hata No=" + STR$(ERR)
  108. IF Hata = 3 THEN Mesaj$ = "!Dizin Oluƒturma Hatasì !!"
  109. CALL MesajYaz
  110. END
  111.  
  112. AnsiYuklumu:
  113. DATA &H50
  114. DATA &H53
  115. DATA &H1E
  116. DATA &HB8,&H00,&H1A
  117. DATA &HCD,&H2F
  118. DATA &HBB,&H00,&HB9
  119. DATA &H8E,&HDB
  120. DATA &HA2,&H00,&H00
  121. DATA &H1F
  122. DATA &H5B
  123. DATA &H58
  124. DATA &HCB
  125.  
  126. 'Yeni interrupt rutini
  127. YeniKesme:
  128. DATA &H50               : 'PUSH AX
  129. DATA &H1E               : 'PUSH DS
  130. DATA &HB8, 0, &HB9      : 'MOV AX, B900
  131. DATA &H8E, &HD8         : 'MOV DS, AX
  132. DATA &H88, &H26, 2, 0   : 'MOV [0002], AH
  133. DATA &HB0, &H20         : 'MOV AL,20
  134. DATA &HE6, &H20         : 'MOV 20,AL
  135. DATA &H1F               : 'POP DS
  136. DATA &H58               : 'POP AX
  137. DATA &HCF               : 'IRET
  138.  
  139. 'ÿnterrupt Kontrol Yazmacìnìn IRQ'ya izin verme rutini
  140. IRQSerbest:
  141. DATA &H50                  : 'PUSH AX
  142. DATA &H53                  : 'PUSH BX
  143. DATA &H51                  : 'PUSH CX
  144. DATA &H1E                  : 'PUSH DS
  145. DATA &HFA                  : 'CLI
  146. DATA &HB8, 0, &HB9         : 'MOV AX,B900
  147. DATA &H8E, &HD8            : 'MOV DS,AX
  148. DATA &H31, &HC9            : 'XOR CX,CX
  149. DATA &HB1, 2               : 'MOV CL,02
  150. DATA &HBB, 1, 0            : 'MOV BX,0001
  151. DATA &HD3, &HE3            : 'SHL BX,CL
  152. DATA &HF7, &HD3            : 'NOT BX
  153. DATA &HE4, &HA1            : 'IN AL,A1
  154. DATA &HA2, 0, 0            : 'MOV [0000],AL
  155. DATA &H20, &HF8            : 'AND AL,BH
  156. DATA &HE6, &HA1            : 'OUT A1,AL
  157. DATA &HE4, &H21            : 'IN AL,21
  158. DATA &HA2, 1, 0            : 'MOV [0001],AL
  159. DATA &H20, &HD8            : 'AND AL,BL
  160. DATA &HE6, &H21            : 'OUT 21,AL
  161. DATA &HFB                  : 'STI
  162. DATA &H1F                  : 'POP DS
  163. DATA &H59                  : 'POP CX
  164. DATA &H5B                  : 'POP BX
  165. DATA &H58                  : 'POP AX
  166. DATA &HCB                  : 'RETF
  167.  
  168. SUB AdresSec
  169.     Sec1$(0) = Adres$
  170.     Sec$(1) = CHR$(4) + " $03F8 "
  171.     Sec$(2) = CHR$(4) + " $02F8 "
  172.     Sec$(3) = CHR$(5) + " $03E8 "
  173.     Sec$(4) = CHR$(6) + " $02E8 "
  174.     Sec$(5) = CHR$(6) + " $4220 "
  175.     Sec$(6) = CHR$(3) + " $4228 "
  176.     Sec$(7) = CHR$(3) + " $5220 "
  177.     Sec$(8) = CHR$(3) + " $5228 "
  178.     MenuYatay = 6
  179.     MenuDikey = 55
  180.     MenuGenis = 7
  181.     MenuYuksek = 9
  182.     MenuSecim$ = "32E8045"
  183.  CALL HareketliMenu
  184.  IF Tus$ <> "" THEN Adres$ = MID$(Sec$(Yatay - MenuYatay), 3, 5)
  185. END SUB
  186.  
  187. SUB AlmaDizinineGec
  188. COLOR 7, 1
  189. CLS
  190. S = 0
  191. Q$ = ""
  192. FOR I = LEN(Dizin$(2)) TO 1 STEP -1
  193.   A$ = MID$(Dizin$(2), I, 1)
  194.   IF A$ = "\" THEN
  195.     IF S = 0 THEN S = 1 ELSE EXIT FOR
  196.   ELSE
  197.     Q$ = Q$ + A$
  198.   END IF
  199. NEXT
  200. Q1$ = ""
  201. FOR I = LEN(Q$) TO 1 STEP -1
  202.   A$ = MID$(Q$, I, 1)
  203.   Q1$ = Q1$ + A$
  204. NEXT
  205. CHDIR Q1$
  206. END SUB
  207.  
  208. SUB AnsiyeBak
  209. RESTORE AnsiYuklumu
  210. REDIM A%(20)
  211. DEF SEG = VARSEG(A%(0))
  212.  
  213.     FOR I% = 0 TO 19
  214.        READ D%
  215.        POKE VARPTR(A%(0)) + I%, D%
  216.     NEXT I%
  217.  
  218. CALL absolute(VARPTR(A%(0)))
  219. DEF SEG
  220.  
  221. DEF SEG = &HB900
  222. IF PEEK(0) = 255 THEN Ekra$ = "ANSI"
  223. END SUB
  224.  
  225. SUB ArkaPlanCiz
  226.   SCREEN , , 3, 0
  227.   COLOR 9, 7: CLS
  228.     A$ = " Programlama Sanatì.."
  229.     A = LEN(A$)
  230.     FOR I = 0 TO 1840 / A
  231.        B = 80 - C
  232.        IF B <= A THEN
  233.           PRINT LEFT$(A$, B);
  234.           PRINT RIGHT$(A$, A - B);
  235.           C = A - B: D = C
  236.        ELSE
  237.           PRINT A$;
  238.           C = C + A
  239.        END IF
  240.     NEXT
  241.   DEF SEG = EkranAdresi + 256 * 3
  242.     FOR I = 3680 + D * 2 TO 4000 STEP A * 2
  243.        FOR Y = 1 TO A
  244.         POKE I + (Y - 1) * 2, ASC(MID$(A$, Y, 1))
  245.        NEXT
  246.     NEXT
  247.     SCREEN , , 0
  248. END SUB
  249.  
  250. SUB Artma
  251.   VeriAlYatay = VeriAlYatay + 1
  252.   IF VeriAlYatay = MenuYatay + MenuYuksek THEN VeriAlYatay = MenuYatay + 1
  253. END SUB
  254.  
  255. SUB Artma2
  256.   VeriAlYatay = VeriAlYatay + 1
  257.   IF VeriAlYatay = MenuYatay + MenuYuksek THEN VeriAlYatay = MenuYatay + 2
  258. END SUB
  259.  
  260. SUB BaudSec
  261.     Sec$(0) = "[ Hìz ]"
  262.     Sec1$(0) = Baud$
  263.     Sec$(1) = CHR$(4) + "   2400 Bps "
  264.     Sec$(2) = CHR$(4) + "   4800 Bps "
  265.     Sec$(3) = CHR$(5) + "   9600 Bps "
  266.     Sec$(4) = CHR$(3) + "  14400 Bps "
  267.     Sec$(5) = CHR$(4) + "  19200 Bps "
  268.     Sec$(6) = CHR$(3) + "  38400 Bps "
  269.     Sec$(7) = CHR$(4) + "  57600 Bps "
  270.     Sec$(8) = CHR$(4) + " 115200 Bps "
  271.     MenuYatay = 6
  272.     MenuDikey = 60
  273.     MenuGenis = 12
  274.     MenuYuksek = 9
  275.     MenuSecim$ = "24619375"
  276.  CALL HareketliMenu
  277.  IF Tus$ <> "" THEN Baud$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
  278. END SUB
  279.  
  280. SUB CerceveCiz
  281.  COLOR Renk(1), Renk(2)
  282.    FOR I = 1 TO MenuYuksek - 1
  283.      LOCATE MenuYatay + I, MenuDikey: PRINT "║"; STRING$(MenuGenis, " "); "║"
  284.    NEXT
  285.    LOCATE MenuYatay, MenuDikey
  286.      PRINT "╔"; STRING$(MenuGenis, "═"); "╗"
  287.    LOCATE MenuYatay + MenuYuksek, MenuDikey
  288.      PRINT "╚"; STRING$(MenuGenis, "═"); "╝";
  289.  
  290.  DEF SEG = EkranAdresi
  291.    FOR I = 1 TO MenuGenis + 1
  292.      POKE ((MenuYatay + MenuYuksek) * 160 + (MenuDikey + I) * 2 + 1), 9
  293.    NEXT
  294.    FOR I = 1 TO MenuYuksek + 1
  295.      TR = ((MenuYatay + I - 1) * 160 + (MenuDikey + MenuGenis + 1) * 2 + 1)
  296.      POKE TR, 9
  297.      POKE TR + 2, 9
  298.    NEXT
  299.  
  300.  DEF SEG
  301.  LOCATE MenuYatay + MenuYuksek, MenuDikey + MenuGenis - LEN(Cer$) - 1
  302.  PRINT Cer$
  303.  COLOR Renk(3), Renk(4): LOCATE MenuYatay, MenuDikey + 3: PRINT Sec$(0)
  304. END SUB
  305.  
  306. SUB ConfigAc
  307.  CLOSE #3
  308.  OPEN "R", #3, "MODEM.KUR", 420
  309.  FIELD #3, 170 AS Veri$, 250 AS Veri1$
  310.  IF LOF(3) <> 420 THEN
  311.    PUT #3, 1
  312.    CALL Ilkkurulma
  313.  END IF
  314. END SUB
  315.  
  316. SUB ConfigOku
  317. CALL ConfigAc
  318. GET #3, 1
  319.   IF ASC(Veri$) <> 71 THEN
  320.      Veri$ = SPACE$(170)
  321.      Veri1$ = SPACE$(250)
  322.   END IF
  323.   Kim$ = MID$(Veri$, 2, 30)
  324.   Tel$ = MID$(Veri$, 32, 20)
  325.   IRQ$ = MID$(Veri$, 52, 4)
  326.   Baud$ = MID$(Veri$, 56, 6)
  327.   Adres$ = MID$(Veri$, 62, 5)
  328.   PortNo$ = MID$(Veri$, 67, 4)
  329.   Ekran$ = MID$(Veri$, 71, 4)
  330.   Katar$ = MID$(Veri$, 75, 50)
  331.   Kosul$ = MID$(Veri$, 125, 6)
  332.   Cevap$ = MID$(Veri$, 131, 6)
  333.   Echo$ = MID$(Veri$, 137, 6)
  334.   Ses$ = MID$(Veri$, 143, 6)
  335.   Tutanak$ = MID$(Veri$, 149, 6)
  336.   Sontel = VAL(MID$(Veri$, 155, 1))
  337.   IF Sontel = 0 THEN Sontel = 1
  338.   IF Veri$ <> SPACE$(170) THEN
  339.      FOR I = 1 TO 10
  340.         Renk(I) = ASC(MID$(Veri$, 159 + I, 1))
  341.      NEXT
  342.   ELSE
  343.      Katar$ = "ATZ" + SPACE$(47)
  344.      PortNo$ = "Com-"
  345.      Adres$ = "$----"
  346.      Baud$ = "2400"
  347.      IRQ$ = "IRQ7"
  348.      Ekran$ = Ekra$
  349.      Kosul$ = "Açìk  "
  350.      Cevap$ = "Açìk  "
  351.      Echo$ = "Kapalì"
  352.      Ses$ = "Açìk  "
  353.      Tutanak$ = "Kapalì"
  354.   END IF
  355.   Y = 0
  356.   FOR I = 1 TO 250 STEP 50
  357.      Y = Y + 1
  358.      Dizin$(Y) = RTRIM$(MID$(Veri1$, I, 50))
  359.   NEXT
  360. Port = VAL("&H" + RIGHT$(Adres$, 4))
  361. IF Ses$ = "Kapalì" THEN Muzik$ = "P4" ELSE Muzik$ = "O2L8CD"
  362. END SUB
  363.  
  364. SUB ConfigYaz
  365. CALL ConfigAc
  366. B$ = SPACE$(170)
  367.   MID$(B$, 1, 1) = "G"
  368.   MID$(B$, 2, 30) = Kim$
  369.   MID$(B$, 32, 20) = Tel$
  370.   MID$(B$, 52, 4) = IRQ$
  371.   MID$(B$, 56, 6) = Baud$
  372.   MID$(B$, 62, 5) = Adres$
  373.   MID$(B$, 67, 4) = PortNo$
  374.   MID$(B$, 71, 4) = Ekran$
  375.   MID$(B$, 75, 50) = Katar$
  376.   MID$(B$, 125, 6) = Kosul$
  377.   MID$(B$, 131, 6) = Cevap$
  378.   MID$(B$, 137, 6) = Echo$
  379.   MID$(B$, 143, 6) = Ses$
  380.   MID$(B$, 149, 6) = Tutanak$
  381.   MID$(B$, 155, 1) = LTRIM$(STR$(Sontel))
  382.   FOR I = 1 TO 10
  383.     MID$(B$, 159 + I, 1) = CHR$(Renk(I))
  384.   NEXT
  385.   LSET Veri$ = B$
  386. C$ = SPACE$(250)
  387.   Y = 0
  388.   FOR I = 1 TO 250 STEP 50
  389.     Y = Y + 1
  390.     MID$(C$, I, 50) = Dizin$(Y)
  391.   NEXT
  392.   LSET Veri1$ = C$
  393.   PUT #3, 1
  394. CALL ConfigOku
  395. END SUB
  396.  
  397. SUB DizinAc
  398. Diz:
  399.       FOR Z = 1 TO 5
  400.          Hata = 2
  401.          D$ = Dizin$(Z) + "$$.4E$"
  402.          CLOSE #4
  403.          OPEN "R", #4, D$, 1
  404.          IF Hata = 3 THEN
  405.              D$ = LEFT$(Dizin$(Z), LEN(Dizin$(Z)) - 1)
  406.              MKDIR D$
  407.              GOTO Diz
  408.          END IF
  409.          FIELD #4, 1 AS E$
  410.          CLOSE #4
  411.          KILL D$
  412.       NEXT
  413. Hata = 0
  414. END SUB
  415.  
  416. SUB Dizinler
  417.   CALL ConfigOku
  418.   IF Dizin$(1) = "" THEN
  419.      COLOR 1, 1
  420.      CLS
  421.      Hata = 1
  422.      FILES "$$.$EF"
  423.      Hata = 0
  424.      B$ = ""
  425.      FOR I = 1 TO 59
  426.          B$ = B$ + CHR$(SCREEN(1, I))
  427.      NEXT
  428.      Dizin$(1) = RTRIM$(B$)
  429.      IF RIGHT$(Dizin$(1), 1) <> "\" THEN Dizin$(1) = Dizin$(1) + "\"
  430.   END IF
  431.   IF Dizin$(2) = "" THEN Dizin$(2) = Dizin$(1) + "GELEN\"
  432.   IF Dizin$(3) = "" THEN Dizin$(3) = Dizin$(1) + "GIDEN\"
  433.   IF Dizin$(4) = "" THEN Dizin$(4) = Dizin$(1) + "PROTOKOL\"
  434.   IF Dizin$(5) = "" THEN Dizin$(5) = Dizin$(1) + "TUTANAK\"
  435.  
  436. PCOPY 3, 0
  437.       MenuYatay = 9
  438.       MenuDikey = 2
  439.       MenuGenis = 73
  440.       MenuYuksek = 6
  441.       Sec$(0) = "[ Dizinler ]"
  442.       CALL CerceveCiz
  443.    
  444.     Sec1$(1) = "Ana Çalìƒma Dizini"
  445.     Sec1$(2) = "Gelenlerin Yeri"
  446.     Sec1$(3) = "Gideceklerin Yeri"
  447.     Sec1$(4) = "Protokol Programlarì"
  448.     Sec1$(5) = "Görüƒme Tutanaklarì"
  449.    
  450.     FOR I = 5 TO 1 STEP -1
  451.     COLOR Renk(1), Renk(2)
  452.        Sec$(I) = SPACE$(50)
  453.        MID$(Sec$(I), 1, LEN(Dizin$(I))) = Dizin$(I)
  454.        LOCATE MenuYatay + I, MenuDikey + 2
  455.        PRINT Sec1$(I); " ";
  456.        COLOR Renk(9), Renk(10)
  457.        PRINT Sec$(I)
  458.     NEXT
  459.     VeriAlYatay = MenuYatay + 1
  460.     VeriTipi = 3
  461.    DO
  462.       V = VeriAlYatay - MenuYatay
  463.       VerialBoy = LEN(Sec$(V))
  464.       VerialDikey = MenuDikey + LEN(Sec1$(V)) + 3
  465.       Verial$ = Sec$(V)
  466.       CALL Verialma
  467.       LOCATE VeriAlYatay, VerialDikey
  468.       COLOR Renk(9), Renk(10)
  469.       PRINT Verial$
  470.       Sec$(V) = Verial$
  471.  
  472.         SELECT CASE Z
  473.           CASE 80
  474.             CALL Artma
  475.           CASE 72
  476.             CALL Eksilme
  477.           CASE 27
  478.             EXIT DO
  479.           CASE 13
  480.             CALL Artma
  481.         END SELECT
  482.    LOOP
  483. FOR I = 1 TO 5
  484.   Sec$(I) = RTRIM$(Sec$(I))
  485.   IF RIGHT$(Sec$(I), 1) <> "\" THEN Sec$(I) = Sec$(I) + "\"
  486.   Dizin$(I) = Sec$(I)
  487. NEXT
  488. CALL DizinAc
  489. CALL ConfigYaz
  490. END SUB
  491.  
  492. SUB DosyaAc
  493.  CLOSE #6
  494.  OPEN "R", #6, DosyaAd$, DosyaBoy
  495.  FIELD #6, DosyaBoy AS Veri$
  496. END SUB
  497.  
  498. SUB DosyaAl
  499. CALL ProtokolSec
  500. IF Tus$ = "" THEN EXIT SUB
  501. A$ = MID$(Sec1$(Yatay - MenuYatay), 17, 12)
  502. B$ = MID$(Sec1$(Yatay - MenuYatay), 29, 30)
  503. CALL AlmaDizinineGec
  504. SHELL Dizin$(4) + A$ + B$
  505. CHDIR ".."
  506. END SUB
  507.  
  508. SUB DosyaGonder
  509. CALL ProtokolSec
  510.  IF Tus$ = "" THEN EXIT SUB
  511. A$ = MID$(Sec1$(Yatay - MenuYatay), 17, 12)
  512. B$ = MID$(Sec1$(Yatay - MenuYatay), 59, 30) + " "
  513. GelGid$ = Dizin$(4) + A$ + B$
  514. LOCATE , , 0
  515. CALL DosyaOgren
  516. END SUB
  517.  
  518. SUB DosyaOgren
  519. Q$ = Dizin$(3)
  520. Dosya:
  521. GOSUB Tara
  522. PCOPY 3, 0
  523.       Sec$(0) = "[ Yardìm ]"
  524.       MenuYatay = 5
  525.       MenuDikey = 38
  526.       MenuGenis = 25
  527.       MenuYuksek = 5
  528.       Cer$ = ""
  529.       CALL CerceveCiz
  530.       Sec$(0) = ""
  531.       MenuYatay = 1
  532.       MenuDikey = 2
  533.       MenuGenis = LEN(Q$) + 14
  534.       MenuYuksek = 2
  535.       CALL CerceveCiz
  536.       COLOR Renk(1), Renk(2)
  537.       LOCATE 2, MenuDikey + 1
  538.       PRINT "Aktif Dizin = "; Q$
  539.       LOCATE 6, 39: PRINT "Esc...... Vazgeç"
  540.       LOCATE 7, 39: PRINT "Enter.... Dosya Gönder"
  541.       LOCATE 8, 39: PRINT "Del...... Dosya Sil"
  542.       LOCATE 9, 39: PRINT "Space.... Dosya ÿƒaretle"
  543.       Sec$(0) = "[ Dosya Gönderme ]"
  544.       MenuYatay = 5
  545.       MenuDikey = 9
  546.       MenuGenis = 23
  547.       H = 17
  548.       IF E < H THEN H = E
  549.       MenuYuksek = H + 1
  550.       CALL CerceveCiz
  551.       Cer$ = "Esc)Vazgeç"
  552.       GOSUB Ekranyaz
  553.       V = 1
  554. DO
  555. Konum:
  556. V3 = V + V2
  557. COLOR Renk(5), Renk(6)
  558. GOSUB GenelYaz
  559. DO: A$ = INKEY$: LOOP UNTIL A$ <> ""
  560. COLOR Renk(1), Renk(2)
  561. GOSUB GenelYaz
  562. IF LEN(A$) = 2 THEN
  563.         Z = ASC(RIGHT$(A$, 1))
  564.         SELECT CASE Z
  565.           CASE 80
  566.             IF V < H THEN V = V + 1 ELSE IF V2 < E - H THEN V2 = V2 + 1: GOSUB Ekranyaz
  567.           CASE 72
  568.             IF V > 1 THEN V = V - 1 ELSE IF V2 > 0 THEN V2 = V2 - 1: GOSUB Ekranyaz
  569.           CASE 83
  570.             S = 0
  571.             FOR I = 1 TO E
  572.               IF MID$(Sec$(I), 1, 1) = "√" THEN V4 = I: GOSUB Sil
  573.             NEXT
  574.             IF S = 0 AND INSTR(Sec$(V3), "Dizin") = 0 THEN V4 = V3: GOSUB Sil
  575.             IF S = 1 GOTO Dosya
  576.         END SELECT
  577. ELSE
  578.         Z = ASC(A$)
  579.         SELECT CASE Z
  580.           CASE 27
  581.             EXIT SUB
  582.           CASE 13
  583.             IF INSTR(Sec$(V3), "Dizin") = 0 THEN
  584.                S = 0
  585.                FOR I = 1 TO E
  586.                   IF MID$(Sec$(I), 1, 1) = "√" THEN
  587.                   V4 = I: GOSUB DosyaGonder
  588.                   S = 1
  589.                   END IF
  590.                NEXT
  591.                IF S = 0 THEN
  592.                   V4 = V3: GOSUB DosyaGonder
  593.                END IF
  594.                EXIT SUB
  595.             ELSE
  596.                IF INSTR(Sec$(V3), "Önceki") = 0 THEN
  597.                   Q$ = Q$ + RTRIM$(MID$(Sec$(V3), 2, 12)) + "\"
  598.                ELSE
  599.                   S = 0
  600.                   FOR I = LEN(Q$) TO 1 STEP -1
  601.                      IF MID$(Q$, I, 1) = "\" THEN
  602.                         IF S = 0 THEN S = 1 ELSE EXIT FOR
  603.                      END IF
  604.                      Q$ = LEFT$(Q$, I - 1)
  605.                   NEXT
  606.                END IF
  607.                GOTO Dosya
  608.             END IF
  609.           CASE 32
  610.             IF INSTR(Sec$(V3), "Dizin") = 0 THEN
  611.                IF MID$(Sec$(V3), 1, 1) = "√" THEN MID$(Sec$(V3), 1, 1) = " " ELSE MID$(Sec$(V3), 1, 1) = "√"
  612.                GOSUB GenelYaz
  613.              END IF
  614.              IF V < H THEN V = V + 1 ELSE IF V2 < E - H THEN V2 = V2 + 1: GOSUB Ekranyaz
  615.          END SELECT
  616. END IF
  617. LOOP
  618. Ekranyaz:
  619. COLOR Renk(1), Renk(2)
  620. FOR I = 1 TO H
  621. LOCATE MenuYatay + I, MenuDikey + 1
  622. PRINT LEFT$(Sec$(V2 + I) + SPACE$(23), 23)
  623. NEXT
  624. RETURN
  625.  
  626. GenelYaz:
  627. LOCATE MenuYatay + V, MenuDikey + 1
  628. PRINT Sec$(V3)
  629. RETURN
  630.  
  631. Tara:
  632. V2 = 0
  633. LOCATE , , 0
  634. D$ = "H GGG.D$D"
  635. F$ = "DIR " + Q$ + "*.*/OG/B >" + D$
  636. SHELL F$
  637. DosyaAd$ = D$
  638. DosyaBoy = 1
  639. CALL DosyaAc
  640. S = INSTR(Q$, "\")
  641. S1 = INSTR(S + 1, Q$, "\")
  642. E = 0
  643. FOR I = 1 TO Kapasite
  644.    Sec$(I) = ""
  645. NEXT
  646. IF S1 > 0 THEN E = 1: Sec$(1) = " Önceki Dizin          "
  647. FOR I = 1 TO LOF(6)
  648.   GET #6, I
  649.   IF ASC(Veri$) = 13 THEN
  650.     E = E + 1
  651.     IF E > Kapasite THEN E = Kapasite: EXIT FOR
  652.     Sec$(E) = G$
  653.     Hata = 4
  654.     GOSUB Ogren
  655.     Sec$(E) = " " + LEFT$(Sec$(E) + SPACE$(23), 22)
  656.     IF Hata = 4 THEN H$ = STR$(LOF(5)): H = LEN(H$): MID$(Sec$(E), 23 - H, H) = H$
  657.     IF Hata = 5 THEN MID$(Sec$(E), 16, 7) = "<Dizin>"
  658.     IF INSTR(G$, D$) > 0 THEN E = E - 1
  659.     CLOSE #5
  660.     Hata = 0
  661.     G$ = ""
  662.     I = I + 1
  663.   ELSE
  664.     G$ = G$ + Veri$
  665.   END IF
  666. NEXT
  667. CLOSE #6
  668. KILL D$
  669. RETURN
  670. Ogren:
  671.  CLOSE #5
  672.  OPEN "R", #5, Q$ + Sec$(E), 1
  673.  IF Hata = 4 THEN FIELD #5, 1 AS V$
  674.  RETURN
  675. Sil:
  676. Dos$ = RTRIM$(MID$(Sec$(V4), 2, 12))
  677. Mesaj$ = "2" + Dos$ + " isimli dosyayì sileyim mi? E)vet H)ayìr"
  678. CALL MesajYaz
  679. IF INSTR("Ee", Tercih$) > 0 THEN
  680.     KILL Q$ + Dos$
  681.     S = 1
  682. END IF
  683. RETURN
  684. DosyaGonder:
  685. Dos$ = Q$ + RTRIM$(MID$(Sec$(V4), 2, 12))
  686. S = 1
  687. COLOR 7, 1
  688. CLS
  689. SHELL GelGid$ + Dos$
  690. RETURN
  691. END SUB
  692.  
  693. SUB EkranAc
  694. CLOSE #2
  695. Ek$ = "SCRN:"
  696. IF Ekran$ = "ANSI" THEN Ek$ = "CON"
  697. OPEN Ek$ FOR OUTPUT AS #2
  698. END SUB
  699.  
  700. SUB EkranAdresiBul
  701. EkranAdresi = &HB800
  702. DEF SEG = 0
  703. IF PEEK(&H449) = 7 THEN EkranAdresi = &HB000
  704. END SUB
  705.  
  706. SUB EkranKoy
  707. PCOPY 1, 0
  708. LOCATE , , 1
  709.      IF Ek$ = "CON" THEN
  710.        PRINT #2, CHR$(27); "[u";
  711.      ELSE
  712.        LOCATE Satir, Sutun
  713.      END IF
  714. END SUB
  715.  
  716. SUB EkranSakla
  717. PCOPY 0, 1
  718.      IF Ek$ = "CON" THEN
  719.        PRINT #2, CHR$(27); "[s";
  720.      ELSE
  721.        Satir = CSRLIN
  722.        Sutun = POS(0)
  723.      END IF
  724. LOCATE , , 0
  725. END SUB
  726.  
  727. SUB EkranSec
  728.     Sec1$(0) = Ekran$
  729.     Sec$(1) = CHR$(2) + " TTY "
  730.     Sec$(2) = CHR$(2) + " ANSI "
  731.     MenuYatay = 9
  732.     MenuDikey = 55
  733.     MenuGenis = 6
  734.     MenuYuksek = 3
  735.     MenuSecim$ = "TA"
  736.  CALL HareketliMenu
  737.  IF Tus$ <> "" THEN Ekran$ = MID$(Sec$(Yatay - MenuYatay), 3, 4)
  738. END SUB
  739.  
  740. SUB EkranUstuYaz
  741. IF RR <> FIX(TIMER * 10) THEN
  742.     IF Ek$ = "CON" THEN
  743.        PRINT #2, CHR$(27); "[s";
  744.        GOSUB EkranUstuOrtak
  745.        PRINT #2, CHR$(27); "[u";
  746.     ELSE
  747.        Satir = CSRLIN
  748.        Sutun = POS(0)
  749.        GOSUB EkranUstuOrtak
  750.        LOCATE Satir, Sutun
  751.    END IF
  752. END IF
  753. EXIT SUB
  754. EkranUstuOrtak:
  755. COLOR Renk(9), Renk(10)
  756. RR = FIX(TIMER * 10)
  757. LOCATE , , 0
  758. Yaz$ = " Alt+Z Yardìm │ Türkçe ÿletiƒim Programì │ " + PortNo$ + ":        │ " + Ekran$ + " │  Saat=" + TIME$ + " "
  759. MID$(Yaz$, 49, 6) = LTRIM$(Baud$)
  760. LOCATE 1, 1
  761. PRINT Yaz$;
  762. LOCATE , , 1, 6, 7
  763. COLOR Renk(2), Renk(1)
  764. RETURN
  765. END SUB
  766.  
  767. SUB Eksilme
  768.     VeriAlYatay = VeriAlYatay - 1
  769.     IF VeriAlYatay = MenuYatay THEN VeriAlYatay = MenuYatay + MenuYuksek - 1
  770. END SUB
  771.  
  772. SUB Eksilme2
  773.     VeriAlYatay = VeriAlYatay - 1
  774.     IF VeriAlYatay = MenuYatay + 1 THEN VeriAlYatay = MenuYatay + MenuYuksek - 1
  775. END SUB
  776.  
  777. SUB Elveda
  778.    Cer$ = ""
  779.    Sec$(0) = "[ Türkçe iletiƒim Programì Ver-1.0 Beta]"
  780.    PCOPY 3, 0
  781.      MenuYatay = 2
  782.      MenuDikey = 2
  783.      MenuGenis = 74
  784.      MenuYuksek = 8
  785.    CALL CerceveCiz
  786.      COLOR 7, 1
  787.      FOR I = 13 TO 25: LOCATE I, 1: PRINT SPACE$(80); : NEXT
  788.      COLOR Renk(1), Renk(2)
  789.      LOCATE 3, 3
  790.      PRINT "Yapìm              : Gürol DEMÿR, Aºustos 1995, E-Mail:Gurold@doruk.com.tr"
  791.      LOCATE 5, 3
  792.      PRINT "Katkìda bulunanlar : Doruk BBS program-f üyelerinden; Nihat, Ziya, Ferhat,"
  793.      LOCATE 6, 24
  794.      PRINT "Suat, Hüseyin, Bora, Koray, Savaƒ, Buyar ve ÿsmail"
  795.      LOCATE 8, 3
  796.      PRINT "Özel teƒekkürler   : Irq konusundaki yardìmlarì için sayìn Recep Tezkol'a"
  797.      LOCATE 9, 24
  798.      PRINT "Planlama için sevgili dostum M.Doºan Özdemir'e"
  799.  
  800.      LOCATE 12, 1
  801. END SUB
  802.  
  803. SUB HareketliMenu
  804.   LOCATE , , 0
  805.   CALL CerceveCiz
  806.   A = 1: Bul = 0
  807.   FOR I = 1 TO MenuYuksek - 1
  808.     IF INSTR(Sec$(I), Sec1$(0)) > 0 AND Bul = 0 THEN A = I: Bul = 1
  809.     Yata = MenuYatay + I: G = I
  810.     RenkA = Renk(1): RenkB = Renk(2)
  811.     GOSUB Yaz
  812.   NEXT
  813.  
  814.   Yatay = MenuYatay + A
  815.  
  816.   DO
  817.      G = Yatay - MenuYatay
  818.      Yata = Yatay: RenkA = Renk(5): RenkB = Renk(6): GOSUB Yaz
  819.  
  820.      DO: Tus$ = INKEY$: LOOP UNTIL Tus$ <> ""
  821.  
  822.      RenkA = Renk(1): RenkB = Renk(2): GOSUB Yaz
  823.  
  824.      IF LEN(Tus$) = 2 THEN
  825.          Z = ASC(RIGHT$(Tus$, 1))
  826.          SELECT CASE Z
  827.             CASE 80
  828.                Yatay = Yatay + 1: IF Yatay = MenuYatay + MenuYuksek THEN Yatay = MenuYatay + 1
  829.             CASE 72
  830.                Yatay = Yatay - 1: IF Yatay = MenuYatay THEN Yatay = MenuYatay + MenuYuksek - 1
  831.          END SELECT
  832.      END IF
  833.  
  834.  IF ASC(Tus$) = 27 THEN
  835.     Tus$ = ""
  836.     EXIT SUB
  837.  END IF
  838.  
  839.  IF ASC(Tus$) = 13 THEN Yer = ASC(Sec$(G)) + 1: Tus$ = MID$(Sec$(G), Yer, 1)
  840.  V = INSTR(LEFT$(Al$(1), 34), Tus$)
  841.  IF V > 0 THEN Tus$ = MID$(Al$(0), V, 1)
  842.  V = INSTR(MenuSecim$, Tus$)
  843.  IF V > 0 THEN Yatay = MenuYatay + V: EXIT SUB
  844. LOOP
  845.  
  846. Yaz:
  847.  LOCATE Yata, MenuDikey + 1
  848.   COLOR RenkA, RenkB
  849.          PRINT MID$(Sec$(G), 2, LEN(Sec$(G)) - 1)
  850.     Yer = ASC(Sec$(G)) + 1
  851.     LOCATE Yata, MenuDikey + 1 + Yer - 2
  852.        COLOR Renk(7)
  853.          PRINT MID$(Sec$(G), Yer, 1)
  854. RETURN
  855.  
  856. END SUB
  857.  
  858. SUB IlkBaslama
  859. CALL ProtokolOku
  860. FOR V = 1 TO 5
  861.    A$ = RTRIM$(MID$(Sec1$(V), 89, 30))
  862.    Protokol$(V) = ""
  863.    FOR I = 1 TO LEN(A$) STEP 2
  864.       Protokol$(V) = Protokol$(V) + CHR$(VAL("&H" + MID$(A$, I, 2)))
  865.    NEXT
  866.    Protokol$(V) = RTRIM$(Protokol$(V))
  867.    IF Protokol$(V) = "" THEN Protokol$(V) = "√≈G&D Amatör Programcìlìk Hastasì√≈"
  868. NEXT
  869. CALL MakroTusOku
  870.  Ekra$ = "TTY "
  871.  
  872. 'VeriTipi Açìklamasì
  873. '1=Alfabetik
  874. '2=Rakamsal
  875. '3=Karìƒìk
  876. Al$(0) = "QWERTYUIOPªÜASDFGHJKL₧ÿZXCVBNMÖÇqwertyuìopºüasdfghjklƒizxcvbnmöç"
  877. Al$(1) = "qwertyuìopºüasdfghjklƒizxcvbnmöçQWERTYUIOPªÜASDFGHJKL₧ÿZXCVBNMÖÇ -/.!'^+%&/()=?_;*\,:"
  878. Al$(2) = "1234567890-/. "
  879. Al$(3) = Al$(1) + Al$(2) + "═"
  880. Al$(4) = "0123456789ACBDEFabcdef"
  881. Renk(1) = 1: 'Normal yazì
  882. Renk(2) = 7
  883. Renk(3) = 14: 'Menü adì
  884. Renk(4) = 3
  885. Renk(5) = 7: 'Aktif Satìr
  886. Renk(6) = 1
  887. Renk(7) = 15: 'Menü seçim rengi
  888. Renk(8) = 4
  889. Renk(9) = 4:  'Veri Rengi
  890. Renk(10) = 7
  891.  
  892.   CALL AnsiyeBak
  893.   CALL EkranAdresiBul
  894.   CALL ArkaPlanCiz
  895.   Cer$ = "Esc)Tamam"
  896.   CALL ConfigOku
  897.   CALL Terminal
  898. END SUB
  899.  
  900. SUB Ilkkurulma
  901. CALL ConfigOku
  902. CALL Kullanan
  903. CALL Dizinler
  904. CALL ModemBul
  905. CALL Modemsetup
  906. CALL ConfigYaz
  907. END SUB
  908.  
  909. SUB IrqSec
  910.     Sec1$(0) = IRQ$
  911.     Sec$(1) = CHR$(5) + " IRQ3 "
  912.     Sec$(2) = CHR$(5) + " IRQ4 "
  913.     Sec$(3) = CHR$(5) + " IRQ5 "
  914.     Sec$(4) = CHR$(5) + " IRQ7 "
  915.     MenuYatay = 8
  916.     MenuDikey = 55
  917.     MenuGenis = 6
  918.     MenuYuksek = 5
  919.     MenuSecim$ = "3457"
  920.  CALL HareketliMenu
  921.  IF Tus$ <> "" THEN IRQ$ = MID$(Sec$(Yatay - MenuYatay), 3, 4)
  922. END SUB
  923.  
  924. SUB Kullanan
  925. PCOPY 3, 0
  926.       MenuYatay = 10
  927.       MenuDikey = 15
  928.       MenuGenis = 49
  929.       MenuYuksek = 3
  930.       Sec$(0) = "[ Yeni Kurulum ]"
  931.       CALL CerceveCiz
  932.     CALL ConfigOku
  933.     Sec1$(1) = "Adìnìz Soyadìnìz"
  934.     Sec1$(2) = "Telefon Numaranìz"
  935.     Sec$(1) = Kim$
  936.     Sec$(2) = Tel$
  937.     FOR I = 1 TO 2
  938.     COLOR Renk(1), Renk(2)
  939.        LOCATE MenuYatay + I, MenuDikey + 2
  940.        PRINT Sec1$(I); " ";
  941.        COLOR Renk(9), Renk(10)
  942.        PRINT Sec$(I)
  943.     NEXT
  944.       VeriAlYatay = MenuYatay + 1
  945.  
  946.    DO
  947.       V = VeriAlYatay - MenuYatay
  948.       VeriTipi = V
  949.       VerialBoy = LEN(Sec$(V))
  950.       VerialDikey = MenuDikey + LEN(Sec1$(V)) + 3
  951.       Verial$ = Sec$(V)
  952.       CALL Verialma
  953.       LOCATE VeriAlYatay, VerialDikey
  954.       COLOR Renk(9), Renk(10)
  955.       PRINT Verial$
  956.       Sec$(V) = Verial$
  957.  
  958.         SELECT CASE Z
  959.           CASE 80
  960.             CALL Artma
  961.           CASE 72
  962.             CALL Eksilme
  963.           CASE 27
  964.             EXIT DO
  965.           CASE 13
  966.             CALL Artma
  967.         END SELECT
  968.    LOOP
  969. Kim$ = Sec$(1)
  970. Tel$ = Sec$(2)
  971. CALL ConfigYaz
  972. END SUB
  973.  
  974. SUB Kurulumlar
  975.  PCOPY 3, 0
  976.     Sec$(0) = "[ Ayarlar ]"
  977.     Sec$(1) = CHR$(2) + " Dÿzin Deºiƒtirme "
  978.     Sec$(2) = CHR$(2) + " Terminal Bilgileri Giriƒi "
  979.     Sec$(3) = CHR$(2) + " Renk Ayarlarì "
  980.     Sec$(4) = CHR$(2) + " Protokol Bilgileri Giriƒi "
  981.     Sec$(5) = CHR$(2) + " Makro Tuƒ Tanìmlarì "
  982.     MenuYatay = 9
  983.     MenuDikey = 20
  984.     MenuGenis = 34
  985.     MenuYuksek = 6
  986.     MenuSecim$ = "DTRPM"
  987.  CALL HareketliMenu
  988.  SELECT CASE Tus$
  989.       CASE "D"
  990.           CALL Dizinler
  991.           CALL Kurulumlar
  992.       CASE "T"
  993.           IF Gid$(9) <> "1" THEN CALL ModemKapa
  994.           CALL Modemsetup
  995.           CALL ConfigYaz
  996.           Gid$(9) = "1"
  997.           CALL Kurulumlar
  998.       CASE "R"
  999.           CALL RenkAyar
  1000.           CALL Kurulumlar
  1001.       CASE "M"
  1002.           CALL MakroTus
  1003.           CALL Kurulumlar
  1004.       CASE "P"
  1005.           CALL ProtokolDefteri
  1006.           CALL Kurulumlar
  1007.   END SELECT
  1008. CALL ConfigYaz
  1009. END SUB
  1010.  
  1011. SUB MakroTus
  1012. PCOPY 3, 0
  1013.       Sec$(0) = "[ Makro Tuƒ Takìmlarì ]"
  1014.       MenuYatay = 5
  1015.       MenuDikey = 11
  1016.       MenuGenis = 59
  1017.       MenuYuksek = 15
  1018.       Cer$ = "PgDn/PgUp)Diºer Sayfa═══Esc)Tamam"
  1019.       CALL CerceveCiz
  1020.       Cer$ = "Esc)Tamam"
  1021.          LOCATE MenuYatay + 1, MenuDikey + 2
  1022.          COLOR Renk(7), Renk(8)
  1023.          PRINT "Tuƒlar"
  1024.          LOCATE MenuYatay + 1, MenuDikey + 9
  1025.          PRINT "Bu Tuƒlara Atanan Kelime Grubu                    "
  1026.       VeriAlYatay = MenuYatay + 2
  1027.       VerialDikey = MenuDikey + 9
  1028.       VerialBoy = 50
  1029.       VeriTipi = 3
  1030.       CALL MakroTusOku
  1031.       V1 = 1
  1032.       GOSUB YazEkrr
  1033.  
  1034.    DO
  1035.       COLOR Renk(9), Renk(10)
  1036.       LOCATE MenuYatay, MenuDikey + MenuGenis - 5
  1037.       V = V1 * 13 - 14 + VeriAlYatay - MenuYatay
  1038.       PRINT LEFT$(Makro$(V), 1)
  1039.       Verial$ = RIGHT$(Makro$(V), 50)
  1040.       CALL Verialma
  1041.       LOCATE VeriAlYatay, VerialDikey
  1042.       COLOR Renk(9), Renk(10)
  1043.       PRINT Verial$
  1044.       MID$(Makro$(V), 2, 50) = Verial$
  1045.  
  1046.         SELECT CASE Z
  1047.           CASE 80
  1048.             CALL Artma2
  1049.           CASE 81
  1050.             IF V1 < 2 THEN V1 = V1 + 1
  1051.             GOSUB YazEkrr
  1052.           CASE 73
  1053.             IF V1 > 1 THEN V1 = V1 - 1
  1054.             GOSUB YazEkrr
  1055.           CASE 72
  1056.             CALL Eksilme2
  1057.           CASE 27
  1058.             GOSUB Yazdosyy
  1059.             EXIT DO
  1060.           CASE 13
  1061.             CALL Artma2
  1062.         END SELECT
  1063.    LOOP
  1064. EXIT SUB
  1065.  
  1066. YazEkrr:
  1067.   COLOR Renk(9), Renk(10)
  1068.   V2 = V1 * 13 - 12
  1069.   FOR I = 1 TO 13
  1070.     T = V2 + I - 1
  1071.     LOCATE MenuYatay + I + 1, MenuDikey + 2
  1072.     PRINT "Ctrl+"; LEFT$(Makro$(T), 1); " "; RIGHT$(Makro$(T), 50)
  1073.   NEXT
  1074. RETURN
  1075.  
  1076. Yazdosyy:
  1077.   CLOSE #6
  1078.   KILL DosyaAd$
  1079.   CALL DosyaAc
  1080.   FOR I = 1 TO 26
  1081.          LSET Veri$ = Makro$(I)
  1082.          PUT #6, I
  1083.   NEXT
  1084. RETURN
  1085.  
  1086. END SUB
  1087.  
  1088. SUB MakroTusOku
  1089.         DosyaAd$ = "MODEM.MKR"
  1090.         DosyaBoy = 51
  1091.         CALL DosyaAc
  1092.         M$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  1093.    FOR I = 1 TO 26
  1094.      GET #6, I
  1095.      Makro$(I) = MID$(M$, I, 1) + SPACE$(50)
  1096.       IF MID$(Veri$, 1, 1) = MID$(M$, I, 1) THEN Makro$(I) = Veri$
  1097.    NEXT
  1098. END SUB
  1099.  
  1100. SUB MesajYaz
  1101.     PCOPY 0, 2
  1102.     LOCATE , , 0
  1103.         M1 = 13
  1104.         M3 = LEN(Mesaj$) + 1
  1105.         M2 = FIX((80 - M3) / 2)
  1106.         M4 = 2
  1107.         COLOR Renk(1), Renk(2)
  1108.         FOR I = 1 TO M4 - 1
  1109.            LOCATE M1 + I, M2
  1110.            PRINT "║"; STRING$(M3, " "); "║"
  1111.         NEXT
  1112.         LOCATE M1, M2
  1113.         PRINT "╔"; STRING$(M3, "═"); "╗"
  1114.         LOCATE M1 + M4, M2
  1115.         PRINT "╚"; STRING$(M3, "═"); "╝";
  1116.     DEF SEG = EkranAdresi
  1117.     FOR I = 1 TO M3 + 1
  1118.         A = ((M1 + M4) * 160 - 1 + (M2 + I) * 2 + 1)
  1119.         POKE A + 1, 9
  1120.     NEXT
  1121.     FOR I = 1 TO M4 + 1
  1122.         TR = ((M1 + I - 1) * 160 + (M2 + M3 + 1) * 2 + 1)
  1123.         POKE TR, 9: POKE TR + 2, 9
  1124.     NEXT
  1125.     DEF SEG
  1126.     DO
  1127.       LOCATE 14, M2 + 2: PRINT RIGHT$(Mesaj$, M3 - 2)
  1128.       PLAY Muzik$ + "P64"
  1129.       IF ASC(Mesaj$) < 34 THEN EXIT DO
  1130.       DO: Tercih$ = INKEY$: LOOP UNTIL Tercih$ <> ""
  1131.       IF ASC(Mesaj$) = 49 THEN EXIT DO
  1132.           SELECT CASE Tercih$
  1133.               CASE "E", "e"
  1134.                   EXIT DO
  1135.                CASE "H", "h", CHR$(27)
  1136.                   EXIT DO
  1137.                END SELECT
  1138.     LOOP
  1139. IF ASC(Mesaj$) <> 33 THEN PCOPY 2, 0
  1140. END SUB
  1141.  
  1142. SUB MesajYazTerminal
  1143.             CALL EkranSakla
  1144.             CALL MesajYaz
  1145.             CALL EkranKoy
  1146. END SUB
  1147.  
  1148. SUB ModemAc
  1149. Ekran = 0
  1150. IF Tutanak$ = "Açìk  " THEN
  1151.   Isim = 0
  1152. YeniTutanak:
  1153.   Isim = Isim + 1
  1154.   DosyaAdi$ = Dizin$(5) + "MODEM" + LTRIM$(STR$(Isim)) + ".CAP"
  1155.   DosyaBoyu = 1
  1156.   CALL TutanakAc
  1157.  IF LOF(7) <> 0 THEN GOTO YeniTutanak
  1158. END IF
  1159.  
  1160. DEF SEG = 0
  1161.  
  1162.   FOR I = 40 TO 63:             'ÿnterrupt adresleri
  1163.     Sakla(I - 40) = PEEK(I)
  1164.   NEXT
  1165.  
  1166.   Sakla(24) = INP(&H21)          'PIC deºerleri
  1167.   Sakla(25) = INP(&HA1)
  1168.  
  1169.   Sakla(26) = PEEK(1026)         'Com2 adresi
  1170.   Sakla(27) = PEEK(1027)
  1171.  
  1172.   Sakla = INP(Port + 3)
  1173.   OUT Port + 3, 128
  1174.   Sakla(28) = INP(Port)
  1175.   OUT Port + 3, Sakla
  1176.  
  1177.   POKE 1027, FIX(Port / 256)
  1178.   POKE 1026, Port - PEEK(1027) * 256
  1179.  
  1180.   CLOSE #1
  1181.   OPEN "Com2:2400,N,8,1" FOR RANDOM AS #1
  1182.  
  1183.   OUT &H21, Sakla(24)           'PIC deºerleri
  1184.   OUT &HA1, Sakla(25)
  1185.  
  1186.   Sakla = INP(Port + 3)
  1187.   OUT Port + 3, 128
  1188.   OUT Port, 115200 / VAL(Baud$)
  1189.   OUT Port + 3, Sakla
  1190.  
  1191.   IRQ = VAL(MID$(IRQ$, 4, 1))
  1192.  
  1193.   IntAdres = (IRQ + 8) * 4
  1194.   POKE IntAdres, PEEK(44)
  1195.   POKE IntAdres + 1, PEEK(45)
  1196.   POKE IntAdres + 2, PEEK(46)
  1197.   POKE IntAdres + 3, PEEK(47)
  1198.  
  1199.    RESTORE IRQSerbest
  1200.    REDIM Oku(44)
  1201.    DEF SEG = VARSEG(Oku(0))
  1202.  
  1203.     FOR PicMask = 0 TO 44
  1204.        READ D%
  1205.        IF PicMask = 13 THEN D% = IRQ
  1206.        POKE VARPTR(Oku(0)) + PicMask, D%
  1207.     NEXT PicMask
  1208.  
  1209.    CALL absolute(VARPTR(Oku(0)))
  1210. END SUB
  1211.  
  1212. SUB ModemBul
  1213. LOCATE , , 0
  1214. PCOPY 3, 0
  1215.     Baud$ = "0"
  1216.     Sec$(0) = " Modem Arama "
  1217.     Cer$ = ""
  1218.     MenuYatay = 3
  1219.     MenuDikey = 5
  1220.     MenuGenis = 68
  1221.     MenuYuksek = 10
  1222.     CALL CerceveCiz
  1223.     Cer$ = "Esc)Tamam"
  1224.  
  1225. COLOR Renk(9), Renk(2)
  1226. LOCATE MenuYatay + 1, MenuDikey + 1
  1227. PRINT "C.No Adresi IRQ No Yapìlan iƒlem ve sonuç Fabrika Hìzì Önerilen Hìz"
  1228.  
  1229.   DEF SEG = 0
  1230.   FOR I = 40 TO 63
  1231.     Sakla(I - 40) = PEEK(I)
  1232.   NEXT
  1233.   Sakla(25) = INP(&H21)
  1234.   Sakla(26) = INP(&HA1)
  1235.  
  1236.   FOR Y = 2 TO 7
  1237.     IF Y <> 6 THEN
  1238.       DEF SEG = &HB900
  1239.       RESTORE YeniKesme
  1240.       B = (Y - 2) * 20 + 11
  1241.  
  1242.       FOR I = B TO B + 17
  1243.          READ A
  1244.          POKE I, A
  1245.       NEXT
  1246.  
  1247.       POKE B + 9, Y
  1248.       DEF SEG = 0
  1249.       C = 32 + Y * 4
  1250.       POKE C, B
  1251.       POKE C + 1, 0
  1252.       POKE C + 2, 0
  1253.       POKE C + 3, &HB9
  1254.     END IF
  1255.   NEXT
  1256.  
  1257. FOR Y1 = 2 TO 7
  1258.  IF Y1 <> 6 THEN
  1259.    RESTORE IRQSerbest
  1260.    REDIM Oku(44)
  1261.    DEF SEG = VARSEG(Oku(0))
  1262.  
  1263.     FOR PicMask = 0 TO 44
  1264.        READ D%
  1265.        IF PicMask = 13 THEN D% = Y1
  1266.        POKE VARPTR(Oku(0)) + PicMask, D%
  1267.     NEXT PicMask
  1268.  
  1269.    CALL absolute(VARPTR(Oku(0)))
  1270.  END IF
  1271. NEXT
  1272.  
  1273. COLOR Renk(1), Renk(2)
  1274. Bekle = 5
  1275.  
  1276. A$ = "103F8202F8303E8402E854220642287522085228"
  1277.  
  1278. FOR I = 1 TO 40 STEP 5
  1279.   Port$ = MID$(A$, I, 5)
  1280.   LOCATE MenuYatay + I / 5 + 2, MenuDikey + 1
  1281.   PRINT "Com"; LEFT$(Port$, 1); "  "; RIGHT$(Port$, 4); "    ??"
  1282. NEXT
  1283.  
  1284. Ekran$ = Ekra$
  1285.  
  1286. FOR I = 1 TO 40 STEP 5
  1287.    DEF SEG = &HB900
  1288.    FOR Y = 2 TO 9
  1289.        POKE Y, 0
  1290.    NEXT
  1291.  
  1292.   Port$ = MID$(A$, I + 1, 4)
  1293.   Port = VAL("&H" + Port$)
  1294.   LOCATE MenuYatay + VAL(MID$(A$, I, 1)) + 1, MenuDikey + 20
  1295.   PRINT "Bakìyorum"
  1296.   LOCATE MenuYatay + VAL(MID$(A$, I, 1)) + 1, MenuDikey + 20
  1297.  
  1298.  
  1299.       IF INP(Port + 1) <> 255 THEN
  1300.          A = INP(Port + 3)
  1301.          OUT Port + 3, 128
  1302.          OUT Port, 115200 / 14400
  1303.          OUT Port + 3, A
  1304.  
  1305.          OUT Port + 1, 3
  1306.          OUT Port + 4, 11
  1307.  
  1308.            FOR S = 1 TO 2
  1309.              B$ = "ATZ" + CHR$(13)
  1310.              GOSUB Yolla
  1311.            NEXT
  1312.  
  1313.             DEF SEG = &HB900
  1314.             FOR Y = 2 TO 9
  1315.                IF PEEK(Y) <> 0 THEN
  1316.                   LOCATE MenuYatay + VAL(MID$(A$, I, 1)) + 1, MenuDikey + 13
  1317.                   PRINT "Irq="; Y
  1318.                   Y1 = Y
  1319.                   LOCATE MenuYatay + VAL(MID$(A$, I, 1)) + 1, MenuDikey + 20
  1320.                END IF
  1321.             NEXT
  1322.  
  1323.            GOSUB Gelen
  1324.            IF INSTR(B$, "OK") = 0 THEN
  1325.                PRINT "Baƒka bir aygìt var !"
  1326.            ELSE
  1327.                IRQ$ = "IRQ" + LTRIM$(STR$(Y1))
  1328.                PortNo$ = "Com" + MID$(A$, I, 1)
  1329.                Adres$ = "$" + Port$
  1330.                PRINT "*Bir modem bulundu...* ";
  1331.                B$ = "ATI" + CHR$(13)
  1332.                GOSUB Yolla
  1333.                GOSUB Gelen
  1334.                IF INSTR(B$, "14400") > 1 THEN Baud$ = "14400 Bps"
  1335.                IF INSTR(B$, "2400") > 1 THEN Baud$ = "2400 Bps"
  1336.                IF INSTR(B$, "28000") > 1 THEN Baud$ = "28800 Bps"
  1337.                IF INSTR(B$, "ERROR") > 1 THEN Baud$ = "Öºrenilemedi!"
  1338.                    PRINT Baud$; SPACE$(14 - LEN(Baud$));
  1339.                    Baud$ = LTRIM$(STR$(VAL(Baud$) * 4))
  1340.                    IF VAL(Baud$) = 0 THEN Baud$ = "14400"
  1341.                    PRINT Baud$; " Bps"
  1342.            END IF
  1343.  
  1344.             OUT Port + 1, 0
  1345.             OUT Port + 4, 0
  1346.       ELSE
  1347.          PRINT "Hiç aygìt yok !!!"
  1348.       END IF
  1349. NEXT
  1350.  
  1351.   DEF SEG = 0
  1352.   FOR I = 40 TO 63
  1353.     POKE I, Sakla(I - 40)
  1354.   NEXT
  1355.   OUT &H21, Sakla(25)
  1356.   OUT &HA1, Sakla(26)
  1357.  
  1358. LOCATE MenuYatay + 10, MenuDikey + 45
  1359. PRINT "Bir tuƒa basìnìz"
  1360. DO: LOOP UNTIL INKEY$ <> ""
  1361. EXIT SUB
  1362.  
  1363. Yolla:
  1364. FOR J = 1 TO LEN(B$)
  1365. A = ASC(MID$(B$, J, 1))
  1366.     DO
  1367.       IF (INP(Port + 5) AND 32) = 32 THEN
  1368.          OUT Port, A
  1369.          EXIT DO
  1370.       END IF
  1371.     LOOP
  1372. NEXT
  1373. RETURN
  1374.  
  1375. Gelen:
  1376. B = FIX(TIMER)
  1377. B$ = ""
  1378. DO
  1379.     IF (INP(Port + 5) AND 1) = 1 THEN
  1380.          B$ = B$ + CHR$(INP(Port))
  1381.     END IF
  1382. IF FIX(TIMER) - B >= Bekle THEN EXIT DO
  1383. IF INSTR(B$, "OK") > 0 THEN EXIT DO
  1384. LOOP
  1385. RETURN
  1386. END SUB
  1387.  
  1388. SUB ModemHangUp
  1389. A$ = CHR$(13)
  1390. Gid$(0) = CHR$(27) + A$ + "~~~+++~~~" + A$ + "ATH" + A$ + "ATZ" + A$
  1391. CALL TerminalGidenler
  1392. END SUB
  1393.  
  1394. SUB ModemKapa
  1395. Ekran = 1
  1396. CALL ModemHangUp
  1397.   OUT Port + 4, (INP(Port + 4) AND 252)
  1398.   CLOSE #1
  1399.  
  1400.   Sakla = INP(Port + 3)
  1401.   OUT Port + 3, 128
  1402.   OUT Port, Sakla(28)
  1403.   OUT Port + 3, Sakla
  1404.  
  1405.   DEF SEG = 0
  1406.  
  1407.   FOR I = 40 TO 63:             'ÿnterrupt adresleri
  1408.     POKE I, Sakla(I - 40)
  1409.   NEXT
  1410.  
  1411.   OUT &H21, Sakla(24)           'PIC deºerleri
  1412.   OUT &HA1, Sakla(25)
  1413.  
  1414.   POKE 1026, Sakla(26)          'Com2 adresi
  1415.   POKE 1027, Sakla(27)
  1416.  
  1417. END SUB
  1418.  
  1419. SUB Modemsetup
  1420. Yty = 6
  1421. Setup:
  1422. PCOPY 3, 0
  1423.       Sec$(0) = ""
  1424.       MenuYatay = 21
  1425.       MenuDikey = 51
  1426.       MenuGenis = 22
  1427.       MenuYuksek = 2
  1428.       Cer$ = ""
  1429.       CALL CerceveCiz
  1430.       Cer$ = "Esc)Tamam"
  1431.       COLOR Renk(1), Renk(2)
  1432.       LOCATE 22, 53
  1433.       PRINT "F6) Otomatik Kurulum"
  1434.   Sec$(0) = "[ Modem Ayarlarì ]"
  1435.   Sec$(1) = CHR$(21) + " Modemin Kullandìºì IRQ: " + IRQ$
  1436.   Sec$(2) = CHR$(2) + " ÿletiƒim Hìzì:" + Baud$
  1437.   Sec$(3) = CHR$(2) + " Modem Adresi: " + Adres$
  1438.   Sec$(4) = CHR$(2) + " Port No:" + PortNo$
  1439.   Sec$(5) = CHR$(2) + " Ekran Emülasyonu: " + Ekran$
  1440.   Sec$(6) = CHR$(2) + " Katar: " + Katar$
  1441.   Sec$(7) = CHR$(2) + " Açìl샠Koƒullamasì: " + Kosul$
  1442.   Sec$(8) = CHR$(11) + " Otomatik Cevaplama: " + Cevap$
  1443.   Sec$(9) = CHR$(2) + " Local Echo: " + Echo$
  1444.   Sec$(10) = CHR$(2) + " Ses: " + Ses$
  1445.   Sec$(11) = CHR$(2) + " Görüƒme Tutanaklarì: " + Tutanak$
  1446.       MenuYatay = 5
  1447.       MenuDikey = 8
  1448.       MenuGenis = 59
  1449.       MenuYuksek = 12
  1450.       MenuSecim$ = "IÿMPEKACLSG" + CHR$(242)
  1451.       Sec1$(0) = Sec$(Yty - MenuYatay)
  1452.       CALL HareketliMenu
  1453.       Cer$ = ""
  1454.       Sec$(0) = ""
  1455.       Yty = Yatay
  1456.       IF Yty < 18 THEN Yty = Yty + 1 ELSE Yty = 6
  1457.         SELECT CASE Tus$
  1458.           CASE "I"
  1459.             CALL IrqSec
  1460.             GOTO Setup
  1461.           CASE "ÿ"
  1462.             CALL BaudSec
  1463.             GOTO Setup
  1464.           CASE "M"
  1465.             CALL AdresSec
  1466.             GOTO Setup
  1467.           CASE "P"
  1468.             CALL PortSec
  1469.             GOTO Setup
  1470.           CASE "E"
  1471.             CALL EkranSec
  1472.             GOTO Setup
  1473.           CASE "A"
  1474.             Sec1$(0) = Kosul$
  1475.             CALL Secim
  1476.             IF Tus$ <> "" THEN Kosul$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
  1477.             GOTO Setup
  1478.           CASE "C"
  1479.             Sec1$(0) = Cevap$
  1480.             CALL Secim
  1481.             IF Tus$ <> "" THEN Cevap$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
  1482.             GOTO Setup
  1483.           CASE "L"
  1484.             Sec1$(0) = Echo$
  1485.             CALL Secim
  1486.             IF Tus$ <> "" THEN Echo$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
  1487.             GOTO Setup
  1488.           CASE "S"
  1489.             Sec1$(0) = Ses$
  1490.             CALL Secim
  1491.             IF Tus$ <> "" THEN Ses$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
  1492.             GOTO Setup
  1493.           CASE "G"
  1494.             Sec1$(0) = Tutanak$
  1495.             CALL Secim
  1496.             IF Tus$ <> "" THEN Tutanak$ = MID$(Sec$(Yatay - MenuYatay), 3, 6)
  1497.             GOTO Setup
  1498.           CASE "K"
  1499.             VerialDikey = 17
  1500.             VeriAlYatay = 11
  1501.             VerialBoy = 50
  1502.             Verial$ = Katar$
  1503.             VeriTipi = 3
  1504.             CALL Verialma
  1505.             Katar$ = Verial$
  1506.             GOTO Setup
  1507.           CASE CHR$(242)
  1508.              CALL ModemBul
  1509.              Yty = 8
  1510.              GOTO Setup
  1511.           CASE ELSE
  1512.             Cer$ = "Esc)Tamam"
  1513.             EXIT SUB
  1514.         END SELECT
  1515. END SUB
  1516.  
  1517. SUB OtomatikSec
  1518.     Sec$(0) = "[ Otomatik ÿƒlemler]"
  1519.     Sec1$(0) = Oto$
  1520.     Sec$(1) = CHR$(2) + " Otomatik iƒlem iptal "
  1521.     Sec$(2) = CHR$(2) + " ÿsim + ₧ifre "
  1522.     Sec$(3) = CHR$(3) + " ÿsim + E + ₧ifre "
  1523.     Sec$(4) = CHR$(5) + " ÿsim + Y + ₧ifre "
  1524.     Sec$(5) = CHR$(21) + " Esc + Esc + ÿsim + Y + ₧ifre "
  1525.     Sec$(6) = CHR$(21) + " Esc + Esc + ÿsim + E + ₧ifre "
  1526.     MenuYatay = 12
  1527.     MenuDikey = 30
  1528.     MenuGenis = 30
  1529.     MenuYuksek = 7
  1530.     MenuSecim$ = "OÿSMYE"
  1531.  CALL HareketliMenu
  1532.  IF Tus$ <> "" THEN Oto$ = MID$(Sec$(Yatay - MenuYatay), 2, 40)
  1533. END SUB
  1534.  
  1535. SUB Pencere
  1536.   CALL EkranSakla
  1537.   PCOPY 3, 0
  1538.   Sec$(0) = "[ Yardìm ]"
  1539.   MenuYatay = 8
  1540.   MenuDikey = 8
  1541.   MenuGenis = 64
  1542.   MenuYuksek = 8
  1543.    CALL CerceveCiz
  1544.    COLOR Renk(7), Renk(2)
  1545.    A$ = CHR$(16)
  1546.    LOCATE 9, 9: PRINT "Alt-A Ayarlamalar"
  1547.    LOCATE 9, 45: PRINT "Alt-C Ekranì Sil"
  1548.    LOCATE 10, 45: PRINT "Alt-Z Yardìm"
  1549.    LOCATE 11, 45: PRINT "Alt-B Chat Modu"
  1550.    LOCATE 15, 9: PRINT "Alt-T Telefon Defteri"
  1551.    LOCATE 12, 9: PRINT "Alt-E Echo Aç/Kapa         "; A$; Echo$
  1552.    LOCATE 10, 9: PRINT "Alt-K Baºlantìnìn Kesilmesi"
  1553.    LOCATE 11, 9: PRINT "Alt-D Dos Shell"
  1554.    LOCATE 13, 9: PRINT "Alt-S Ses Aç/Kapa          "; A$; Ses$
  1555.    LOCATE 14, 9: PRINT "Alt-O Otomatik Cevap Verme "; A$; Cevap$
  1556.    LOCATE 12, 45: PRINT "Alt-X Çìkìƒ"
  1557.    LOCATE 14, 45: PRINT "<PgUp> Dosya Gönderme"
  1558.    LOCATE 15, 45: PRINT "<PgDn> Dosya Alma"
  1559.    DO: A$ = INKEY$: LOOP UNTIL A$ <> ""
  1560.   IF LEN(A$) = 2 THEN Z = ASC(RIGHT$(A$, 1))
  1561.   CALL EkranKoy
  1562. END SUB
  1563.  
  1564. SUB PortSec
  1565.     Sec$(0) = ""
  1566.     Sec1$(0) = PortNo$
  1567.     FOR I = 1 TO 8
  1568.       Sec$(I) = CHR$(5) + " Com" + LTRIM$(STR$(I)) + " "
  1569.     NEXT
  1570.     MenuYatay = 6
  1571.     MenuDikey = 55
  1572.     MenuGenis = 6
  1573.     MenuYuksek = 9
  1574.     MenuSecim$ = "12345678"
  1575.  CALL HareketliMenu
  1576.  PortNo$ = MID$(Sec$(Yatay - MenuYatay), 3, 4)
  1577.  
  1578. END SUB
  1579.  
  1580. SUB ProtokolDefteri
  1581. Protol:
  1582. CALL ProtokolSec
  1583.  IF Tus$ = "" THEN EXIT SUB
  1584. PCOPY 3, 0
  1585.     Yatay = Yatay - MenuYatay
  1586.       Sec$(1) = "Protokol ÿsmi"
  1587.       Sec$(2) = "Program Adì"
  1588.       Sec$(3) = "Alma Parametreleri"
  1589.       Sec$(4) = "Gönderme Parametreleri"
  1590.       Sec$(5) = "ÿƒareti(Hex$)"
  1591.       Sec$(0) = "[ Protokol ]"
  1592.       Eski$ = Sec1$(Yatay)
  1593.         Sec1$(1) = MID$(Eski$, 1, 16)
  1594.         Sec1$(2) = MID$(Eski$, 17, 12)
  1595.         Sec1$(3) = MID$(Eski$, 29, 30)
  1596.         Sec1$(4) = MID$(Eski$, 59, 30)
  1597.         Sec1$(5) = MID$(Eski$, 89, 30)
  1598.       MenuYatay = 8
  1599.       MenuDikey = 7
  1600.       MenuGenis = 62
  1601.       MenuYuksek = 6
  1602.       CALL CerceveCiz
  1603.       VeriAlYatay = MenuYatay + 1
  1604.       FOR I = 1 TO 5
  1605.          COLOR Renk(9), Renk(10)
  1606.          LOCATE MenuYatay + I, MenuDikey + 2
  1607.          PRINT Sec$(I)
  1608.          COLOR Renk(1), Renk(2)
  1609.          LOCATE MenuYatay + I, MenuDikey + LEN(Sec$(I)) + 3
  1610.          PRINT Sec1$(I)
  1611.          IF I = 5 THEN V = I: GOSUB HexiYaz
  1612.          NEXT
  1613.       LOCATE MenuYatay, MenuDikey + MenuGenis - 5
  1614.       PRINT Yatay
  1615.       VeriAlYatay = MenuYatay + 1
  1616. DO
  1617. V = VeriAlYatay - MenuYatay
  1618. IF V = 5 THEN
  1619.    VeriTipi = 4
  1620.    GOSUB HexiYaz
  1621. ELSE
  1622.    VeriTipi = 3
  1623. END IF
  1624. VerialDikey = MenuDikey + LEN(Sec$(V)) + 3
  1625. VerialBoy = LEN(Sec1$(V))
  1626. Verial$ = Sec1$(V)
  1627. CALL Verialma
  1628. COLOR Renk(1), Renk(2)
  1629. LOCATE MenuYatay + V, MenuDikey + LEN(Sec$(V)) + 3
  1630. PRINT Verial$
  1631. Sec1$(V) = Verial$
  1632. IF V = 5 THEN GOSUB HexiYaz
  1633.         SELECT CASE Z
  1634.           CASE 80
  1635.             CALL Artma
  1636.           CASE 72
  1637.             CALL Eksilme
  1638.           CASE 27
  1639.             EXIT DO
  1640.           CASE 13
  1641.             CALL Artma
  1642.         END SELECT
  1643. LOOP
  1644. Eski$ = SPACE$(118)
  1645.       MID$(Eski$, 1, 16) = Sec1$(1)
  1646.       MID$(Eski$, 17, 12) = Sec1$(2)
  1647.       MID$(Eski$, 29, 30) = Sec1$(3)
  1648.       MID$(Eski$, 59, 30) = Sec1$(4)
  1649.       MID$(Eski$, 89, 30) = Sec1$(5)
  1650. LSET Veri$ = "G" + Eski$
  1651. PUT #6, Yatay
  1652. GOTO Protol
  1653. HexiYaz:
  1654.    LOCATE 13, 54
  1655.    FOR I = 1 TO 30 STEP 2
  1656.      A = VAL("&H" + MID$(Sec1$(V), I, 2))
  1657.      IF A = 13 THEN A = 251
  1658.      IF A = 10 THEN A = 248
  1659.      IF A = 12 THEN A = 254
  1660.      IF A = 11 THEN A = 244
  1661.      PRINT CHR$(A);
  1662.    NEXT
  1663. RETURN
  1664. END SUB
  1665.  
  1666. SUB ProtokolOku
  1667. DosyaAd$ = "MODEM.PRT"
  1668. DosyaBoy = 119
  1669. CALL DosyaAc
  1670. FOR I = 1 TO 5
  1671.      GET #6, I
  1672.      Sec1$(I) = SPACE$(119)
  1673.        IF MID$(Veri$, 1, 1) = "G" THEN Sec1$(I) = RIGHT$(Veri$, 118)
  1674. NEXT
  1675. END SUB
  1676.  
  1677. SUB ProtokolSec
  1678. CALL ProtokolOku
  1679. PCOPY 3, 0
  1680. COLOR Renk(1), Renk(2)
  1681. FOR I = 1 TO 5
  1682.      Sec$(I) = CHR$(12) + " External (" + LTRIM$(STR$(I)) + ") " + LEFT$(Sec1$(I), 16)
  1683. NEXT
  1684.     Sec1$(0) = Protokol$
  1685.     Sec$(0) = "[ Protokol ]"
  1686.     MenuYatay = 9
  1687.     MenuDikey = 5
  1688.     MenuGenis = 30
  1689.     MenuYuksek = 6
  1690.     MenuSecim$ = "12345"
  1691.     CALL HareketliMenu
  1692. END SUB
  1693.  
  1694. SUB RenkAyar
  1695.  DO
  1696.  PCOPY 3, 0
  1697.     Sec$(0) = "[ Renk Ayarì ]"
  1698.     Sec$(1) = CHR$(2) + " Normal Satìr Renkleri "
  1699.     Sec$(2) = CHR$(2) + " Menü Adlarì "
  1700.     Sec$(3) = CHR$(2) + " Aktif Satìr Renkleri "
  1701.     Sec$(4) = CHR$(2) + " Seçim Karakteri Rengi "
  1702.     Sec$(5) = CHR$(2) + " Veri Giriƒi Renkleri "
  1703.     MenuSecim$ = "NMASV"
  1704.     MenuYatay = 3
  1705.     MenuDikey = 3
  1706.     MenuGenis = 23
  1707.     MenuYuksek = 6
  1708.  CALL HareketliMenu
  1709.  IF Tus$ = "" THEN EXIT DO
  1710.     Yt = (Yatay - MenuYatay) * 2
  1711.     Y = Renk(Yt)
  1712.     X = Renk(Yt - 1)
  1713.     Sec1$(0) = Sec$(Yt / 2)
  1714.     Sec$(0) = "[ Renkler ]"
  1715.     MenuYatay = 8
  1716.     MenuDikey = 31
  1717.     MenuGenis = 16
  1718.     MenuYuksek = 9
  1719.     CALL CerceveCiz
  1720.     FOR J = 0 TO 7
  1721.     FOR I = 0 TO 15
  1722.        LOCATE MenuYatay + J + 1, MenuDikey + I + 1
  1723.        COLOR I, J: PRINT "X"
  1724.     NEXT
  1725.     NEXT
  1726.     DO
  1727.       LOCATE MenuYatay + Y + 1, MenuDikey + X + 1: COLOR 31, 1: PRINT "X"
  1728.       DO: W$ = INKEY$: LOOP UNTIL W$ <> ""
  1729.       LOCATE MenuYatay + Y + 1, MenuDikey + X + 1: COLOR X, Y: PRINT "X"
  1730.       Z = ASC(RIGHT$(W$, 1))
  1731.       IF Z = 27 OR Z = 13 THEN EXIT DO
  1732.       Degis = 1
  1733.       IF Z = 77 THEN X = X + 1: IF X = 16 THEN X = 0
  1734.       IF Z = 75 THEN X = X - 1: IF X = -1 THEN X = 15
  1735.       IF Z = 80 THEN Y = Y + 1: IF Y = 8 THEN Y = 0
  1736.       IF Z = 72 THEN Y = Y - 1: IF Y = -1 THEN Y = 7
  1737.       Renk(Yt) = Y
  1738.       Renk(Yt - 1) = X
  1739.     LOOP
  1740.  LOOP
  1741. CALL ConfigYaz
  1742. END SUB
  1743.  
  1744. SUB Secim
  1745.     Sec$(1) = CHR$(2) + " Açìk  "
  1746.     Sec$(2) = CHR$(2) + " Kapalì "
  1747.     MenuYatay = 9
  1748.     MenuDikey = 55
  1749.     MenuGenis = 8
  1750.     MenuYuksek = 3
  1751.     MenuSecim$ = "AK"
  1752.  CALL HareketliMenu
  1753. END SUB
  1754.  
  1755. SUB TelefonDefteri
  1756. Makro = 0
  1757. Oto = 0
  1758. Tel:
  1759. LOCATE , , 0
  1760. PCOPY 3, 0
  1761.       Sec$(0) = "[ Telefon Defteri ]"
  1762.       MenuYatay = 2
  1763.       MenuDikey = 9
  1764.       MenuGenis = 60
  1765.       GOSUB DosyaOku
  1766.       MenuYuksek = I1 + 1
  1767.       Cer$ = "G)iriƒ══S)il══Enter)Telefonu Çevir══Esc)Çìk"
  1768.       CALL CerceveCiz
  1769.       Cer$ = "Esc)Tamam"
  1770. COLOR Renk(1), Renk(2)
  1771. FOR I = 1 TO I1
  1772.      V = I
  1773.      VeriAlYatay = MenuYatay + I
  1774.      GOSUB EkYaz
  1775. NEXT
  1776.       VeriAlYatay = MenuYatay + Sontel
  1777. DO
  1778. V = VeriAlYatay - MenuYatay
  1779. COLOR Renk(5), Renk(6)
  1780. GOSUB EkYaz
  1781. COLOR Renk(1), Renk(2)
  1782. LOCATE MenuYatay, MenuDikey + MenuGenis - 5
  1783. PRINT V; "═"
  1784. DO: A$ = INKEY$: LOOP UNTIL A$ <> ""
  1785. GOSUB EkYaz
  1786. IF LEN(A$) = 2 THEN
  1787.         Z = ASC(RIGHT$(A$, 1))
  1788.         SELECT CASE Z
  1789.           CASE 80
  1790.             CALL Artma
  1791.           CASE 72
  1792.             CALL Eksilme
  1793.         END SELECT
  1794. ELSE
  1795.         Z = ASC(A$)
  1796.         SELECT CASE Z
  1797.           CASE 27
  1798.             GOSUB SonYaz
  1799.             EXIT SUB
  1800.           CASE 71, 103
  1801.             GOSUB Ekle
  1802.             GOTO Tel
  1803.           CASE 13
  1804.             T$ = MID$(Sec$(V), 31, 20)
  1805.             IF T$ <> SPACE$(20) THEN
  1806.                Sontel = V
  1807.                CALL ConfigYaz
  1808.                Eski$ = Sec$(V)
  1809.                GOSUB Durum
  1810.                Sec$(0) = "[ Telefon Mesajlarì ]"
  1811.                MenuYatay = 9
  1812.                MenuDikey = 19
  1813.                MenuGenis = 40
  1814.                MenuYuksek = 4
  1815.                CALL CerceveCiz
  1816.                COLOR Renk(1), Renk(2)
  1817.                LOCATE 11, 21
  1818.                PRINT "Yapìlan iƒlem: Modem ÿnstall.."
  1819.                CALL ModemKapa
  1820.                PLAY "P2P2"
  1821.                A = 0
  1822.                CALL ModemAc
  1823.                Ekran = 4
  1824.                LOCATE 11, 21
  1825.                PRINT "Önceki Mesaj : Herƒey normal.."
  1826.                LOCATE 12, 21
  1827.                PRINT "Aranan Numara: "; T$
  1828.                DO
  1829.                   A = A + 1
  1830.                   IF A = 10 THEN EXIT DO
  1831.                   IF A$ <> "" THEN IF ASC(A$) = 27 THEN EXIT DO
  1832.                   LOCATE 10, 21
  1833.                   PRINT "Aktif Mesaj  : "; LTRIM$(STR$(A)); ". Defa Arìyorum"
  1834.                   Gid$(0) = "ATDT" + T$ + CHR$(13)
  1835.                   CALL TerminalGidenler
  1836.                   DO
  1837.                       A$ = INKEY$
  1838.                       IF A$ <> "" THEN IF ASC(A$) = 27 THEN EXIT DO
  1839.                       CALL TerminalGelenler
  1840.                       LOCATE 11, 21
  1841.                         IF INSTR(Gelen$, "BUSY") > 0 THEN
  1842.                            Gelen$ = ""
  1843.                            PRINT "Önceki Mesaj : Meƒgul Çalìyor !!      "
  1844.                            EXIT DO
  1845.                         END IF
  1846.                         IF INSTR(Gelen$, "NO DIALTONE") > 0 THEN
  1847.                            Gelen$ = ""
  1848.                            PRINT "Önceki Mesaj : Çevir Sesi Alìnamadì !!"
  1849.                            EXIT DO
  1850.                         END IF
  1851.                         IF INSTR(Gelen$, "NO ANSWER") > 0 THEN
  1852.                            Gelen$ = ""
  1853.                            PRINT "Önceki Mesaj : Cevap Vermiyor !!      "
  1854.                            EXIT DO
  1855.                         END IF
  1856.                         IF INSTR(Gelen$, "CONNECT") > 0 THEN
  1857.                            Gelen$ = ""
  1858.                            Ekran = 0
  1859.                            HatDolu = 1
  1860.                            RR = FIX(TIMER)
  1861.                            EXIT SUB
  1862.                         END IF
  1863.                   LOOP
  1864.                   PLAY Muzik$
  1865.                LOOP
  1866.                Ekran = 0
  1867.                CALL ModemKapa
  1868.                CALL ConfigOku
  1869.                CALL ModemAc
  1870.                EXIT SUB
  1871.             END IF
  1872.           CASE 83, 115
  1873.             Sec$(V) = SPACE$(149)
  1874.             LSET Veri$ = "Z"
  1875.             PUT #6, V
  1876.         END SELECT
  1877. END IF
  1878. LOOP
  1879. EkYaz:
  1880. LOCATE VeriAlYatay, MenuDikey + 2
  1881. PRINT LEFT$(Sec$(V), 30)
  1882. LOCATE VeriAlYatay, MenuDikey + 33
  1883. PRINT MID$(Sec$(V), 31, 20)
  1884. LOCATE VeriAlYatay, MenuDikey + 54
  1885. PRINT MID$(Sec$(V), 51, 6)
  1886. RETURN
  1887. DosyaOku:
  1888. DosyaAd$ = "MODEM.TEL"
  1889. DosyaBoy = 150
  1890. CALL DosyaAc
  1891. I1 = 20
  1892. IF LOF(6) / 150 < 20 THEN I1 = LOF(6) / 150 + 1
  1893. IF LOF(6) / 150 < Sontel THEN Sontel = 1
  1894. FOR I = 1 TO I1
  1895.      GET #6, I
  1896.      Sec$(I) = SPACE$(149)
  1897.      IF MID$(Veri$, 1, 1) = "G" THEN Sec$(I) = RIGHT$(Veri$, 149)
  1898. NEXT
  1899. RETURN
  1900. Durum:
  1901. Sec1$(1) = MID$(Eski$, 1, 30)
  1902. Sec1$(2) = MID$(Eski$, 31, 20)
  1903. Sec1$(3) = MID$(Eski$, 51, 6)
  1904. IF Sec1$(3) = SPACE$(6) THEN Sec1$(3) = Baud$ ELSE Baud$ = Sec1$(3)
  1905. Sec1$(4) = MID$(Eski$, 57, 6)
  1906. IF Sec1$(4) = SPACE$(6) THEN Sec1$(4) = Echo$ ELSE Echo$ = Sec1$(4)
  1907. Sec1$(5) = MID$(Eski$, 63, 30)
  1908. IF Sec1$(5) = SPACE$(30) THEN Sec1$(5) = Kim$
  1909. Sec1$(6) = MID$(Eski$, 93, 16)
  1910. Sec1$(7) = MID$(Eski$, 109, 40)
  1911. FOR I = 1 TO 3
  1912.   Mak$(I) = ""
  1913. NEXT
  1914.   IF INSTR(Sec1$(7), " ÿsim + ₧ifre ") > 0 THEN
  1915.      Mak$(1) = RTRIM$(Sec1$(5)) + "^M"
  1916.      Mak$(2) = RTRIM$(Sec1$(6)) + "^M"
  1917.   END IF
  1918.   IF INSTR(Sec1$(7), " ÿsim + E + ₧ifre ") > 0 THEN
  1919.      Mak$(1) = RTRIM$(Sec1$(5)) + "^ME^M"
  1920.      Mak$(2) = RTRIM$(Sec1$(6)) + "^M"
  1921.   END IF
  1922.   IF INSTR(Sec1$(7), " ÿsim + Y + ₧ifre ") > 0 THEN
  1923.      Mak$(1) = RTRIM$(Sec1$(5)) + "^MY^M"
  1924.      Mak$(2) = RTRIM$(Sec1$(6)) + "^M"
  1925.   END IF
  1926.   IF INSTR(Sec1$(7), " Esc + Esc + ÿsim + E + ₧ifre ") > 0 THEN
  1927.      Mak$(1) = CHR$(27) + CHR$(27)
  1928.      Mak$(2) = RTRIM$(Sec1$(5)) + "^ME^M"
  1929.      Mak$(3) = RTRIM$(Sec1$(6)) + "^M"
  1930.   END IF
  1931.   IF INSTR(Sec1$(7), " Esc + Esc + ÿsim + Y + ₧ifre ") > 0 THEN
  1932.      Mak$(1) = CHR$(27) + CHR$(27)
  1933.      Mak$(2) = RTRIM$(Sec1$(5)) + "^MY^M"
  1934.      Mak$(3) = RTRIM$(Sec1$(6)) + "^M"
  1935.   END IF
  1936. RETURN
  1937. Ekle:
  1938. V9 = V
  1939. Eski$ = Sec$(V)
  1940. VeriAlYatay = 9
  1941. GOSUB Durum
  1942. Ekle2:
  1943. PCOPY 3, 0
  1944.       Sec$(1) = "Karƒì sistemin ünvanì"
  1945.       Sec$(2) = "Telefon No"
  1946.       Sec$(3) = "Baºlantì Hìzì"
  1947.       Sec$(4) = "Echo"
  1948.       Sec$(5) = "Üye Adì Soyadì"
  1949.       Sec$(6) = "₧ifre"
  1950.       Sec$(7) = "Otomatik ÿƒlemler"
  1951.       Sec$(0) = "[ Telefon Defteri ]"
  1952.       MenuYatay = 8
  1953.       MenuDikey = 9
  1954.       MenuGenis = 60
  1955.       MenuYuksek = 8
  1956.       CALL CerceveCiz
  1957.       LOCATE MenuYatay, MenuDikey + MenuGenis - 5
  1958.       PRINT V9
  1959.       VeriTipi = 3
  1960.       FOR I = 1 TO 7
  1961.          COLOR Renk(9), Renk(10)
  1962.          LOCATE MenuYatay + I, MenuDikey + 2
  1963.          PRINT Sec$(I)
  1964.          COLOR Renk(1), Renk(2)
  1965.          LOCATE MenuYatay + I, MenuDikey + LEN(Sec$(I)) + 3
  1966.          PRINT Sec1$(I)
  1967.       NEXT
  1968. DO
  1969. V = VeriAlYatay - MenuYatay
  1970. IF V = 3 THEN
  1971.             CALL BaudSec
  1972.             VeriAlYatay = VeriAlYatay + V8
  1973.             Sec1$(3) = Baud$
  1974.             GOTO Ekle2
  1975. END IF
  1976. IF V = 4 THEN
  1977.             Sec1$(0) = Echo$
  1978.             Sec$(0) = ""
  1979.             Cer$ = ""
  1980.             CALL Secim
  1981.             Cer$ = "Esc)Tamam"
  1982.             Sec1$(4) = MID$(Sec$(Yatay - MenuYatay), 3, 6)
  1983.             VeriAlYatay = VeriAlYatay + V8
  1984.             Echo$ = Sec1$(4)
  1985.             GOTO Ekle2
  1986. END IF
  1987. IF V = 7 THEN
  1988.             CALL OtomatikSec
  1989.             VeriAlYatay = 9
  1990.             Sec1$(7) = LEFT$(Oto$ + SPACE$(40), 40)
  1991.             GOTO Ekle2
  1992. END IF
  1993. VerialDikey = MenuDikey + LEN(Sec$(V)) + 3
  1994. VerialBoy = LEN(Sec1$(V))
  1995. Verial$ = Sec1$(V)
  1996. CALL Verialma
  1997. COLOR Renk(1), Renk(2)
  1998. LOCATE MenuYatay + V, MenuDikey + LEN(Sec$(V)) + 3
  1999. PRINT Verial$
  2000. Sec1$(V) = Verial$
  2001.         SELECT CASE Z
  2002.           CASE 80
  2003.             CALL Artma
  2004.             V8 = 1
  2005.           CASE 72
  2006.             CALL Eksilme
  2007.             V8 = -1
  2008.           CASE 27
  2009.             EXIT DO
  2010.           CASE 13
  2011.             CALL Artma
  2012.             V8 = 1
  2013.         END SELECT
  2014. LOOP
  2015. Eski$ = SPACE$(149)
  2016.       MID$(Eski$, 1, 30) = Sec1$(1)
  2017.       MID$(Eski$, 31, 20) = Sec1$(2)
  2018.       MID$(Eski$, 51, 6) = Sec1$(3)
  2019.       MID$(Eski$, 57, 6) = Sec1$(4)
  2020.       MID$(Eski$, 63, 30) = Sec1$(5)
  2021.       MID$(Eski$, 93, 16) = Sec1$(6)
  2022.       MID$(Eski$, 109, 40) = Sec1$(7)
  2023. LSET Veri$ = "G" + Eski$
  2024. PUT #6, V9
  2025. RETURN
  2026. SonYaz:
  2027. GOSUB DosyaOku
  2028. CLOSE #6
  2029. KILL DosyaAd$
  2030. A$ = "MO $$.TE$"
  2031. CLOSE #5
  2032. OPEN "R", #5, A$, DosyaBoy
  2033. FIELD #5, DosyaBoy AS Veri$
  2034. V9 = 0
  2035. FOR I = 1 TO I1
  2036.   IF Sec$(I) <> SPACE$(149) THEN
  2037.     V9 = V9 + 1
  2038.     LSET Veri$ = "G" + Sec$(I)
  2039.     PUT #5, V9
  2040.   END IF
  2041. NEXT
  2042. CLOSE #5
  2043. NAME A$ AS DosyaAd$
  2044. RETURN
  2045. END SUB
  2046.  
  2047. SUB Terminal
  2048. Basla:
  2049. Gid$(9) = ""
  2050. IF Ekran$ = "ANSI" AND Ekra$ = "TTY " THEN Mesaj$ = " ANSI.SYS Yüklü Deºil !!": CALL MesajYazTerminal
  2051. PCOPY 3, 0
  2052. LOCATE , , 1
  2053. CALL ModemAc
  2054. Gelen$ = ""
  2055. Ekran = 5
  2056.  Gid$(0) = "ATZ" + CHR$(13)
  2057.  CALL TerminalGidenler
  2058.  Mesaj$ = "!Modem install ediliyor,biraz bekleyin..."
  2059.  MesajYaz
  2060.  
  2061. RR = FIX(TIMER)
  2062. DO
  2063.  IF FIX(TIMER) - RR > 5 THEN
  2064.    Mesaj$ = "1Hatalì giriƒ var, kurulum tekrarlanacak, reset için bir tuƒsa basìn."
  2065.    MesajYaz
  2066.    CLOSE #3
  2067.    KILL "MODEM.KUR"
  2068.    DEF SEG = &HFFFF
  2069.    CALL absolute(0)
  2070.  END IF
  2071.  IF LOC(1) > 0 THEN
  2072.     A$ = A$ + INPUT$(LOC(1), #1)
  2073.     IF INSTR(A$, "OK" + CHR$(13) + CHR$(10)) > 0 THEN EXIT DO
  2074.   END IF
  2075. LOOP
  2076.  
  2077. COLOR Renk(2), Renk(1)
  2078. CLS
  2079. LOCATE 2, 1, 1
  2080. CALL EkranAc
  2081. Ekran = 0
  2082. HatDolu = 0
  2083. IF Kosul$ = "Açìk  " THEN Mkr$ = RTRIM$(Katar$) + CHR$(13)
  2084.  
  2085. DO
  2086. CALL TerminalGelenler
  2087.  
  2088. IF Ekran = 0 AND HatDolu = 0 THEN CALL EkranUstuYaz
  2089.  
  2090. IF HatDolu = 1 AND Oto = 1 AND Makro < 3 THEN
  2091.       Makro = Makro + 1
  2092.       Mkr$ = Mkr$ + Mak$(Makro)
  2093. END IF
  2094. Gid$(0) = INKEY$
  2095.       IF Mkr$ <> "" THEN
  2096.          Gid$(0) = LEFT$(Mkr$, 1)
  2097.          IF Gid$(0) = "^" THEN
  2098.             IF MID$(Mkr$, 2, 1) = "M" THEN Gid$(0) = CHR$(13)
  2099.             Mkr$ = RIGHT$(Mkr$, LEN(Mkr$) - 1)
  2100.          END IF
  2101.       END IF
  2102. IF Gid$(0) <> "" THEN
  2103.      IF LEN(Gid$(0)) = 2 THEN
  2104.        Z = ASC(RIGHT$(Gid$(0), 1))
  2105.        IF Z = 45 THEN CALL ModemKapa: EXIT SUB
  2106.        IF Z = 77 THEN Gid$(0) = " ": GOSUB Giden
  2107.        IF Z = 75 THEN Gid$(0) = CHR$(8): GOSUB Giden
  2108.        IF Z = 80 THEN Gid$(0) = CHR$(13) + CHR$(10): GOSUB Giden
  2109.        CALL TerminalMakrolar
  2110.        IF Gid$(9) = "1" THEN GOTO Basla
  2111.      ELSE
  2112.         Z = ASC(Gid$(0))
  2113.         DEF SEG = &H40
  2114.         ALT = PEEK(&H17) AND 4
  2115.         IF ALT = 4 AND Z < 27 AND Mkr$ = "" THEN
  2116.            Tu$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2117.            T$ = MID$(Tu$, Z, 1)
  2118.            FOR I = 1 TO 36
  2119.              IF LEFT$(Makro$(I), 1) = T$ THEN Mkr$ = RTRIM$(MID$(Makro$(I), 2, 50))
  2120.            NEXT
  2121.         ELSE
  2122.            IF Mkr$ <> "" THEN Mkr$ = RIGHT$(Mkr$, LEN(Mkr$) - 1)
  2123.            GOSUB Giden
  2124.         END IF
  2125.      END IF
  2126.    END IF
  2127. LOOP
  2128.  
  2129. Giden:
  2130. GelGid$ = Gid$(0)
  2131. CALL TerminalGidenler
  2132. RETURN
  2133. END SUB
  2134.  
  2135. SUB TerminalChatGelen
  2136. IF ASC(Z$) = 10 THEN EXIT SUB
  2137. IF ASC(Z$) = 13 OR LEN(Gel$(Chat(1))) = 70 THEN
  2138.   Chat(1) = Chat(1) + 1
  2139.   IF Chat(1) = 9 THEN
  2140.          Gel$(9) = ""
  2141.          FOR I = 1 TO 8
  2142.            Gel$(I) = LEFT$(Gel$(I + 1) + SPACE$(70), 70)
  2143.            LOCATE 14 + I, MenuDikey + 1
  2144.            PRINT Gel$(I);
  2145.          NEXT
  2146.          Gel$(8) = ""
  2147.          Chat(1) = 8
  2148.   END IF
  2149. ELSE
  2150.   T = LEN(Gel$(Chat(1)))
  2151.   IF Z$ = CHR$(8) AND T > 0 THEN
  2152.     Gel$(Chat(1)) = LEFT$(Gel$(Chat(1)), T - 1)
  2153.     LOCATE 14 + Chat(1), MenuDikey + 1
  2154.     PRINT Gel$(Chat(1)); " "
  2155.   ELSE
  2156.     IF Z$ <> CHR$(8) THEN Gel$(Chat(1)) = Gel$(Chat(1)) + Z$
  2157.   END IF
  2158. END IF
  2159. LOCATE 14 + Chat(1), MenuDikey + 1
  2160. PRINT Gel$(Chat(1));
  2161. LOCATE , , 1
  2162. END SUB
  2163.  
  2164. SUB TerminalChatGiden
  2165. IF ASC(Gid$(0)) = 13 OR LEN(Gid$(Chat(0))) = 70 THEN
  2166.   Chat(0) = Chat(0) + 1
  2167.   IF Chat(0) = 9 THEN
  2168.          Gid$(9) = ""
  2169.          FOR I = 1 TO 8
  2170.            Gid$(I) = LEFT$(Gid$(I + 1) + SPACE$(70), 70)
  2171.            LOCATE 2 + I, MenuDikey + 1
  2172.            PRINT Gid$(I);
  2173.          NEXT
  2174.          Gid$(8) = ""
  2175.          Chat(0) = 8
  2176.   END IF
  2177. ELSE
  2178.   T = LEN(Gid$(Chat(0)))
  2179.   IF Gid$(0) = CHR$(8) AND T > 0 THEN
  2180.     Gid$(Chat(0)) = LEFT$(Gid$(Chat(0)), T - 1)
  2181.     LOCATE 2 + Chat(0), MenuDikey + 1
  2182.     PRINT Gid$(Chat(0)); " "
  2183.   END IF
  2184.   IF Gid$(0) <> CHR$(8) THEN Gid$(Chat(0)) = Gid$(Chat(0)) + Gid$(0)
  2185. END IF
  2186. LOCATE 2 + Chat(0), MenuDikey + 1
  2187. PRINT Gid$(Chat(0));
  2188. LOCATE , , 1
  2189. END SUB
  2190.  
  2191. SUB TerminalGelenler
  2192. IF Ekran = 1 THEN EXIT SUB
  2193. DO
  2194. Gel$(0) = ""
  2195.      IF LOC(1) THEN Gel$(0) = INPUT$(LOC(1), #1)
  2196.      IF Gel$(0) = "" THEN EXIT DO
  2197.      Gelen$ = Gelen$ + Gel$(0)
  2198.      IF Ekran = 5 THEN EXIT SUB
  2199.      IF LEN(Gelen$) > 250 THEN Gelen$ = RIGHT$(Gelen$, 100)
  2200.      IF INSTR(Gelen$, CHR$(12)) > 0 THEN Oto = 1
  2201.      IF Tutanak$ = "Açìk  " THEN
  2202.           FOR I = 1 TO LEN(Gel$(0))
  2203.             Z$ = MID$(Gel$(0), I, 1)
  2204.             LSET Veri1$ = Z$: PUT #7, LOF(7) + 1
  2205.           NEXT
  2206.      END IF
  2207.      IF Ekran = 3 THEN
  2208.         FOR I = 1 TO LEN(Gel$(0))
  2209.           Z$ = MID$(Gel$(0), I, 1)
  2210.           CALL TerminalChatGelen
  2211.         NEXT
  2212.      ELSE
  2213.           IF Ekran = 0 THEN
  2214.             IF Ek$ = "CON" THEN
  2215.                IF HatDolu = 0 THEN PRINT #2, CHR$(27); "[32;44m";
  2216.                PRINT #2, Gel$(0);
  2217.             ELSE
  2218.                IF HatDolu = 0 THEN COLOR Renk(7)
  2219.                FOR I = 1 TO LEN(Gel$(0))
  2220.                    Z$ = MID$(Gel$(0), I, 1)
  2221.                    IF Z$ <> CHR$(13) THEN PRINT #2, Z$;
  2222.                NEXT
  2223.             END IF
  2224.           END IF
  2225.      END IF
  2226.      IF Ekran < 4 THEN CALL TerminalGelenleriYorumla
  2227. LOOP
  2228. END SUB
  2229.  
  2230. SUB TerminalGelenleriYorumla
  2231.     IF HatDolu = 1 AND INSTR(Gelen$, "NO CARRIER") > 0 THEN
  2232.             Gid$(0) = CHR$(10) + CHR$(13)
  2233.             Gelen$ = ""
  2234.             CALL TerminalGidenler
  2235.             CALL TerminalGelenler
  2236.             HatDolu = 0
  2237.             Mesaj$ = " Baºlantì Kesildi !!"
  2238.             CALL MesajYazTerminal
  2239.             Sec1$(1) = "1"
  2240.     END IF
  2241.     IF HatDolu = 1 THEN
  2242.         FOR I = 1 TO 5
  2243.           IF INSTR(Gelen$, Protokol$(I)) > 0 THEN
  2244.              Gelen$ = ""
  2245.              CALL EkranSakla
  2246.              CALL ProtokolOku
  2247.              A$ = MID$(Sec1$(I), 17, 12)
  2248.              B$ = MID$(Sec1$(I), 29, 30)
  2249.              CALL AlmaDizinineGec
  2250.              SHELL Dizin$(4) + A$ + B$
  2251.              CHDIR ".."
  2252.              CALL EkranKoy
  2253.           END IF
  2254.         NEXT
  2255.     END IF
  2256. IF HatDolu = 1 THEN EXIT SUB
  2257.     IF INSTR(Gelen$, "CONNECT") > 0 THEN
  2258.            Gelen$ = ""
  2259.            Ekran = 0
  2260.            HatDolu = 1
  2261.     END IF
  2262.     IF INSTR(Gelen$, "RING") > 0 THEN
  2263.             Gelen$ = ""
  2264.             FOR I = 1 TO 15
  2265.                SOUND 600, 1
  2266.                SOUND 1200, 1
  2267.             NEXT
  2268.             IF Cevap$ = "Açìk  " THEN
  2269.               Gid$(0) = CHR$(13) + CHR$(10) + "ATA" + CHR$(13)
  2270.               CALL TerminalGidenler
  2271.             ELSE
  2272.               Mesaj$ = " Biri sizi arìyor. Cevaplamak için Alt+O' ya basìnìz"
  2273.               CALL MesajYazTerminal
  2274.             END IF
  2275.             Gelen$ = ""
  2276.     END IF
  2277. END SUB
  2278.  
  2279. SUB TerminalGidenler
  2280. FOR I = 1 TO LEN(Gid$(0))
  2281.        PRINT #1, MID$(Gid$(0), I, 1);
  2282.        CALL TerminalGelenler
  2283. NEXT
  2284. IF Ekran = 0 AND Echo$ = "Açìk  " THEN
  2285.      IF HatDolu = 0 THEN
  2286.        IF Ek$ = "CON" THEN PRINT #2, CHR$(27); "[33;44m";  ELSE COLOR Renk(2), Renk(1)
  2287.      END IF
  2288.      PRINT #2, Gid$(0);
  2289. END IF
  2290. IF Ekran = 3 THEN CALL TerminalChatGiden
  2291. END SUB
  2292.  
  2293. SUB TerminalMakrolar
  2294.        IF Z = 37 THEN
  2295.             CALL ModemKapa
  2296.             CALL ModemAc
  2297.             Mesaj$ = " Baºlantì Kesildi !!"
  2298.             CALL MesajYazTerminal
  2299.             Sec1$(1) = "1"
  2300.        END IF
  2301.        IF Z = 48 THEN
  2302.           IF Ekran = 0 THEN
  2303.             CALL EkranSakla
  2304.             Ekran = 3
  2305.             PCOPY 3, 0
  2306.             MenuYatay = 2
  2307.             MenuDikey = 4
  2308.             MenuGenis = 70
  2309.             MenuYuksek = 9
  2310.             Cer$ = ""
  2311.             Sec$(0) = ""
  2312.             CALL CerceveCiz
  2313.             LOCATE MenuYatay, MenuDikey + 5
  2314.             PRINT "[ Sizin Yazdìklarìnìz ]"
  2315.             MenuYatay = 14
  2316.             CALL CerceveCiz
  2317.             Cer$ = "Esc)Tamam"
  2318.             LOCATE MenuYatay, MenuDikey + 5
  2319.             PRINT "[ Karƒìdan Gelenler ]"
  2320.             FOR I = 1 TO 9
  2321.               Gel$(I) = ""
  2322.               Gid$(I) = ""
  2323.             NEXT
  2324.             LOCATE 3, MenuDikey + 1, 1
  2325.             Chat(0) = 1
  2326.             Chat(1) = 1
  2327.             COLOR Renk(1), Renk(2)
  2328.             Mesaj$ = "1Chat Modu Çìkìƒì yine Alt+B'dir"
  2329.             CALL MesajYaz
  2330.             Mkr$ = Tercih$
  2331.           ELSE
  2332.             Ekran = 0
  2333.             CALL EkranKoy
  2334.           END IF
  2335.        END IF
  2336.        IF Ekran = 3 THEN EXIT SUB
  2337.        IF Z = 44 THEN CALL Pencere
  2338.        IF Z = 46 THEN
  2339.         COLOR Renk(2), Renk(1)
  2340.         CLS
  2341.         LOCATE 2, 1
  2342.        END IF
  2343.        IF Z = 73 THEN
  2344.           CALL EkranSakla
  2345.           CALL DosyaGonder
  2346.           CALL EkranKoy
  2347.        END IF
  2348.        IF Z = 81 THEN
  2349.           CALL EkranSakla
  2350.           CALL DosyaAl
  2351.           CALL EkranKoy
  2352.        END IF
  2353.        IF Z = 30 THEN
  2354.           CALL EkranSakla
  2355.           CALL Kurulumlar
  2356.           CALL EkranKoy
  2357.        END IF
  2358.        IF Z = 20 THEN
  2359.           CALL EkranSakla
  2360.           CALL TelefonDefteri
  2361.           CALL EkranKoy
  2362.        END IF
  2363.        IF Z = 32 THEN
  2364.           CALL EkranSakla
  2365.           CLS
  2366.           PRINT "Geri Dönüƒ için EXIT yazmalìsìnìz..."
  2367.           SHELL ""
  2368.           CALL EkranKoy
  2369.        END IF
  2370.        IF Z = 18 THEN
  2371.             IF Echo$ = "Açìk  " THEN Echo$ = "Kapalì" ELSE Echo$ = "Açìk  "
  2372.             Mesaj$ = " Local Echo ₧imdi " + Echo$
  2373.             CALL MesajYazTerminal
  2374.        END IF
  2375.        IF Z = 24 THEN
  2376.             IF Cevap$ = "Açìk  " THEN Cevap$ = "Kapalì" ELSE Cevap$ = "Açìk  "
  2377.             Mesaj$ = " Otomatik Cevap Verme ₧imdi " + Cevap$
  2378.             CALL MesajYazTerminal
  2379.        END IF
  2380.        IF Z = 31 THEN
  2381.             IF Ses$ = "Açìk  " THEN
  2382.               Ses$ = "Kapalì"
  2383.               Muzik$ = "P1"
  2384.             ELSE
  2385.               Ses$ = "Açìk  "
  2386.               Muzik$ = "O2L8CD"
  2387.             END IF
  2388.             Mesaj$ = " Ses ₧imdi " + Ses$
  2389.             IF Ses$ = "Kapalì" THEN Muzik$ = "P4"
  2390.             CALL MesajYazTerminal
  2391.        END IF
  2392. END SUB
  2393.  
  2394. SUB TutanakAc
  2395.  CLOSE #7
  2396.  OPEN "R", #7, DosyaAdi$, DosyaBoyu
  2397.  FIELD #7, DosyaBoyu AS Veri1$
  2398. END SUB
  2399.  
  2400. SUB Verialma
  2401.      IF Verial$ = "" THEN Verial$ = SPACE$(VerialBoy)
  2402.      F = 1: G = 1
  2403.   DO
  2404.      LOCATE VeriAlYatay, VerialDikey
  2405.      COLOR Renk(5), Renk(6)
  2406.      IF F > VerialBoy THEN F = VerialBoy: G = 0
  2407.      PRINT Verial$
  2408.      LOCATE VeriAlYatay, VerialDikey + F - 1, 1
  2409.      IF JL = 1 THEN LOCATE , , , 4, 7 ELSE LOCATE , , , 6, 7
  2410.      DEF SEG = 0: POKE 1050, PEEK(1052)
  2411.      DO
  2412.       Tus$ = INKEY$
  2413.       IF Mkr$ <> "" THEN
  2414.          Tus$ = LEFT$(Mkr$, 1)
  2415.          Mkr$ = RIGHT$(Mkr$, LEN(Mkr$) - 1)
  2416.       END IF
  2417.       IF Tus$ <> "" THEN EXIT DO
  2418.      LOOP
  2419.  
  2420.      IF LEN(Tus$) = 2 THEN
  2421.         Z = ASC(RIGHT$(Tus$, 1))
  2422.         SELECT CASE Z
  2423.            CASE 77
  2424.               F = F + 1
  2425.            CASE 75
  2426.               IF F > 1 THEN F = F - 1
  2427.            CASE 83
  2428.               Verial$ = LEFT$(Verial$, F - 1) + RIGHT$(Verial$, VerialBoy - F) + " "
  2429.            CASE 82
  2430.               IF JL = 0 THEN JL = 1 ELSE JL = 0
  2431.            CASE 80, 72, 73, 81
  2432.               IF VeriTipi < 5 THEN EXIT DO
  2433.         END SELECT
  2434.      ELSE
  2435.         Z = ASC(Tus$)
  2436.         DEF SEG = &H40
  2437.         ALT = PEEK(&H17) AND 4
  2438.         IF ALT = 4 AND Z < 27 THEN
  2439.            Tu$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2440.            T$ = MID$(Tu$, Z, 1)
  2441.            FOR I = 1 TO 36
  2442.              IF LEFT$(Makro$(I), 1) = T$ THEN Mkr$ = RTRIM$(MID$(Makro$(I), 2, 50))
  2443.            NEXT
  2444.         ELSE
  2445.         SELECT CASE Z
  2446.            CASE 27, 13, 9, 240
  2447.               EXIT DO
  2448.            CASE ELSE
  2449.              IF Z = 242 THEN
  2450.                  JL = 1
  2451.                  Tus$ = CHR$(SCREEN(VeriAlYatay, VerialDikey + F - 1))
  2452.                  Y = INSTR(Al$(0), Tus$)
  2453.                  IF Y > 0 THEN Tus$ = MID$(Al$(1), Y, 1)
  2454.              END IF
  2455.              IF Z = 8 THEN
  2456.                 IF F > 1 THEN
  2457.                   F = F - 1
  2458.                   Verial$ = LEFT$(Verial$, F - 1) + RIGHT$(Verial$, VerialBoy - F) + " "
  2459.                 END IF
  2460.              ELSE
  2461.                Normal = 0
  2462.                IF INSTR(Al$(VeriTipi), Tus$) > 0 THEN Normal = 1
  2463.                IF Normal = 1 THEN
  2464.                  IF JL = 1 THEN MID$(Verial$, F, 1) = Tus$ ELSE Verial$ = LEFT$(Verial$, F - 1) + Tus$ + MID$(Verial$, F, VerialBoy - F)
  2465.                  F = F + 1
  2466.                ELSE
  2467.                  Mesaj$ = " Geçersiz (rakam veya harf) Tuƒa Basìldì"
  2468.                  CALL MesajYaz
  2469.                END IF
  2470.              END IF
  2471.         END SELECT
  2472.         END IF
  2473.      END IF
  2474. LOOP
  2475. END SUB
  2476.  
  2477.